如何使用HTMLagilitypack减少加载HTML页面所需的时间?

时间:2015-05-06 18:55:46

标签: c# html-agility-pack

其实我正在开展这样的项目,我需要从谷歌搜索结果显示的所有网站获取联系页面链接。我设法通过使用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;

1 个答案:

答案 0 :(得分:0)

您的代码并不完整,但我认为您通过并发获取(每个网址的一个帖子)会有更多机会。 IO是通过多线程获得巨大性能改进的完美环境。