使用System.Net.HttpRequest我想在我的代碼中在以下搜索引擎上模仿用戶搜索。用Html Agility Pack颳去網站。 GET的響應不如預期
搜索URL的一個例子是如下:
http://www.scirus.com/srsapp/search?q=core+facilities&t=all&sort=0&g=s
我有以下代碼來執行HTTP GET。注意我正在使用HtmlAgilityPack。
protected override HtmlDocument MakeRequestHtml(string requestUrl)
{
try
{
HttpWebRequest request = WebRequest.Create(requestUrl) as HttpWebRequest;
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.Load(response.GetResponseStream());
return (htmlDoc);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.Read();
return null;
}
}
其中「requestUrl」是上面顯示的示例搜索URL。
htmlDoc.DocumentNode.InnerHtml的內容不包含任何搜索結果,並且看起來完全不像您複製粘貼上面顯示的示例搜索URL到瀏覽器中的搜索結果頁面。
我猜這是因爲你必須先有一個會話才能執行請求。任何人都可以建議是否有可行的方法來複制用戶代理的行爲?或者,也許有一種更好的方式來達到「刮」我不知道的搜索結果的目標?建議請。
robots.txt的內容:htmlDoc.DocumentNode.InnerHtml
謝謝你的作品。其實原始代碼也適用。問題是由於MakeRequestHtml方法的requestUrl參數的格式不正確造成的。 – dior001