使用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