& # 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行,然后将超时处理后面的每一行。
我认为这是因为您对同时连接到站点的HttpWebRequest的最大数量有限制。检查这个。net设置:ConnectionManagement元素(网络设置)。
你也可以通过编程的方式来实现:我如何通过编程的方式在WebClient中删除2个连接限制
它与浏览器并行工作,因为它使用另一个进程。