& # 39; System.Net.WebException& # 39;在htmllagilitypack中使用Pa

本文关键字:Pa WebException System Net htmllagilitypack | 更新日期: 2023-09-27 18:12:12

我有一个web scraper,它处理大约2000个页面,我试图通过使用Parallel来加速。ForEach循环。我当前的代码(为简洁起见)是:

Parallel.ForEach(dataTable1.AsEnumerable(), row =>
{
    scrape();
}
);
public void scrape()
{
    HtmlWeb htmlWeb = new HtmlWeb();
    HtmlAgilityPack.HtmlDocument doc = htmlWeb.Load("http://www.website.com");
    doScraping(doc);
}

当使用常规的foreach循环时,它工作了。现在,它将处理一定数量的行,然后在尝试检索HTMLDocument时开始得到以下异常:

System.Net类型的第一次异常。在System.dll中发生WebException

System.Net类型的第一次异常。

http://lagilitypack .dll出现WebException

操作已超时

在并行循环中操作时,什么原因导致超时发生?它将遍历前150-300行,然后将超时处理后面的每一行。

& # 39; System.Net.WebException& # 39;在htmllagilitypack中使用Pa

我认为这是因为您对同时连接到站点的HttpWebRequest的最大数量有限制。检查这个。net设置:ConnectionManagement元素(网络设置)。

你也可以通过编程的方式来实现:我如何通过编程的方式在WebClient中删除2个连接限制

它与浏览器并行工作,因为它使用另一个进程。