使用 System.Net.HttpRequest 我想在我的代码中模仿用户在以下搜索引擎上的搜索。
搜索 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 内容:
# / robots.txt file for http://www.scirus.com
User-agent: NetMechanic
Disallow: /srsapp/sciruslink
User-agent: *
Disallow: /srsapp/sciruslink
Disallow: /srsapp/search
Disallow: /srsapp/search_simple
Disallow: /search_simple
# for dev and accept server uncomment below line at Build time to disallow robots completely
##Disallow: /
htmlDoc.DocumentNode.InnerHtml 的内容