[英]Get HTML code from a website that has a loading page in C#
我正在使用本文中的代碼: 從C#網站獲取HTML代碼
將html保存為字符串
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
Stream receiveStream = response.GetResponseStream();
StreamReader readStream;
if (response.CharacterSet == null)
readStream = new StreamReader(receiveStream);
else
readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
string data = readStream.ReadToEnd();
response.Close();
readStream.Close();
msgBox.Text = data;
}
但是,我要閱讀的頁面有一個臨時加載器頁面,如何解決這個問題,即在實際加載該頁面后,它會嘗試再次保存html?
最好的祝福
我嘗試讀取的頁面有一個臨時加載器頁面
這完全取決於它的含義以及“臨時加載程序頁面”的工作方式。 例如,如果該頁面(無論是從JavaScript代碼還是HTML META重定向)向目標頁面發出請求,那么您需要捕獲該請求。 目前,您正在從給定的URL閱讀:
(HttpWebRequest)WebRequest.Create(url)
這實際上是對該URL發出GET請求並讀取響應。 但是根據您的描述,聽起來這是錯誤的URL。 聽起來好像有第二個 URL,其中包含您要查找的實際信息。
鑒於此,您實際上有兩個選擇:
url
的值。 url
值獲得的響應中解析出來,然后向新網址。 顯然,第一種選擇要容易得多。 僅當第二個URL隨每次訪問而變化或預期隨時間頻繁變化時,才需要第二個URL。 如果是這樣,那么您就必須對網站如何執行第二個請求進行反向工程,以便您也可以執行它。
Web抓取很快就會變得很復雜,並且經常變成抓取內容的人與托管內容的人(可能不希望抓取內容的人)之間的貓捉老鼠的游戲(甚至是無意識且相互不了解的)。
你為什么不使用網絡瀏覽器並延遲
await Task.Delay(n)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.