我正在研究httpwebrequest,并试图搜索谷歌获取结果并模拟点击所需的链接。这可能吗?
string raw ="http://www.google.com/search?hl=en&q={0}&aq=f&oq=&aqi=n1g10";
string search = string.Format(raw, HttpUtility.UrlEncode(searchTerm));
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(search);
request.Proxy = prox;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII))
{
HtmlElementCollection html = reader.ReadToEnd();
browserA=reader.ReadToEnd();
this.Invoke(new EventHandler(IE1));
}
}
答案 0 :(得分:1)
您可以使用http://htmlagilitypack.codeplex.com/或http://www.justagile.com/linq-to-html.aspx解析页面(如果需要,也可以使用Regexps与此工具一起使用)来查找要“Click”的元素,然后使用此新工具处理HttpWebRequest元素。它正在呼叫http://en.wikipedia.org/wiki/Web_scraping。
此外,您应该记住,如果来自您的IP地址的大量请求,您进行网络抓取的资源可能会禁用您的IP地址,以避免您需要考虑使用代理服务器列表。
答案 1 :(得分:1)
更好的选择是使用谷歌的API之一。
这里列出了所有这些内容:Google APIs
以下是codeplex上的另一个:Google Dot Net
他们提供的服务允许应用程序自由使用谷歌。其中大部分都有wsdl文件,您可以在Visual Studio中使用“添加Web引用”。
当网站不公开公共服务时,使用Regex和HtmlAgility包只能作为最后的手段使用(最近我必须使用它来编写我要编写的内容以集成到uTorrent和BtJunkie)。谷歌显然希望人们以这些方式开发他们的网站。