我有一个网络抓取工具,可以处理大约 2,000 个页面,我试图通过使用 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.dll 中出现“System.Net.WebException”类型的第一次机会异常
HtmlAgilityPack.dll 中出现了“System.Net.WebException”类型的第一次机会异常
操作已超时
是什么导致在并行循环中操作时发生超时?它将通过前 150-300 行,然后将超时每个后续行。