其实我正在开展这样的项目,我需要从谷歌搜索结果显示的所有网站获取联系页面链接。我设法通过使用Load方法(HTMLweb)单独加载所有URL来实现此目的。但是需要花费大量时间逐个加载所有URL,然后获取联系页面地址。
以下是我用来获取联系人页面网址的功能。 我将网站网址作为参数传递(由谷歌搜索结果提取)
private string GetContactPageFromURL(Uri url)
{
//HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
try
{
var getHtmlWeb = new HtmlWeb() { AutoDetectEncoding = false, OverrideEncoding = Encoding.GetEncoding("iso-8859-2"), };
string str = getHtmlWeb.Load("http://" + url.Host).DocumentNode.SelectNodes("//a[contains(@href,'contact')]")[0].Attributes["href"].Value;
if (!str.StartsWith("http://") && !str.StartsWith("https://"))
{
if (!str.Contains(url.Host))
{
if (!str.StartsWith("/"))
str = "/" + str;
str = url.Host + str;
}
str = "http://" + str;
}
return str;
答案 0 :(得分:0)
您的代码并不完整,但我认为您通过并发获取(每个网址的一个帖子)会有更多机会。 IO是通过多线程获得巨大性能改进的完美环境。