C# 如何减少使用HtmlAlityPack加载HTML页面所需的时间?
事实上,我在这样的项目中,我需要从谷歌搜索结果显示的所有网站的联系页面链接工作。我通过使用Load方法(HTMLweb)单独加载所有url来实现这一点。但是一个接一个地加载所有url,然后获取联系人页面地址需要花费大量时间 下面是我用来获取联系人页面URL的函数。 我将网站URL作为参数传递(由google搜索结果获取)C# 如何减少使用HtmlAlityPack加载HTML页面所需的时间?,c#,html-agility-pack,C#,Html Agility Pack,事实上,我在这样的项目中,我需要从谷歌搜索结果显示的所有网站的联系页面链接工作。我通过使用Load方法(HTMLweb)单独加载所有url来实现这一点。但是一个接一个地加载所有url,然后获取联系人页面地址需要花费大量时间 下面是我用来获取联系人页面URL的函数。 我将网站URL作为参数传递(由google搜索结果获取) 您的代码不完整,但我认为通过使获取并发(每个url一个线程),您将有更多的机会。IO是通过多线程获得巨大性能改进的完美环境。与论坛网站不同,我们不使用“感谢”或“感谢任何帮助”
您的代码不完整,但我认为通过使获取并发(每个url一个线程),您将有更多的机会。IO是通过多线程获得巨大性能改进的完美环境。与论坛网站不同,我们不使用“感谢”或“感谢任何帮助”或签名。见”。
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;