我有一个程序,我正试图尽快开始工作。该程序加载许多不同的网站并对其进行一些抓取。
我曾经使用 Forms.HtmlDocument 执行抓取(我基本上是使用 WebRequests 下载它,然后使用 WebBrowser 控件将其推送到文档中) - 但是由于无法强制 WebBrowser当它不是主线程时更新。
所以我决定尝试 HtmlAgilityPack,想也许我可以把它并行化。但是后来我阅读了以下帖子:
如何使用 Parallel.For/ForEach 获得最大性能?(包括表演时间)
这表明它并不能很好地并行化。
转换所有代码需要一些时间(由于怪癖和这一切的复杂性) - 但是我想知道它是否值得。如果我避免使用 WebGet(而是使用 WebRequest 获取流并将其推送到 AgilityPack 中)——这会给我带来有用的性能提升吗?目前,每次迭代大约需要 19 秒,大部分时间都在等待页面下载。
将考虑任何其他想法。谢谢。
编辑:当我们在这里时,使用这两种方法是否会提高速度(即使在单线程环境中?)