优化Web爬网

时间:2012-12-17 19:44:54

标签: c# image performance webclient

我正在开发一种快速工具,可以从网页上抓取图像。目前,我使用WebClient获取页面的源数据,从源中解析图像URL,并使用WebClient.DownloadFile将它们单独下载到文件夹。这可能需要一段时间 据我所知,大部分时间都是由于我的连接和下载数据所致  有没有其他更有效的方法来解决这个问题,无论是C#HTML解析库还是别的什么?

1 个答案:

答案 0 :(得分:1)

您可以使用多个线程,这将打开与网页的多个并发HTTP连接。

一种好的方法是实现Producer / Consumer模式:让一个线程获取并解析包含图像的HTML,然后将图像URL排队到像BlockingCollection这样的东西。让多个线程从队列中读取图像URL并同时下载图像。

http://msdn.microsoft.com/en-us/library/dd997371.aspx

如果你想获得最前沿的话,这个课程如果问题非常适合TPL数据流(替代BlockingCollection)。

http://msdn.microsoft.com/en-us/devlabs/gg585582.aspx