2012-12-17 105 views
0

我正在研究一种从网页抓取图像的快速工具。目前,我使用WebClient获取页面的源数据,将图像URL从源代码中解析出来,然后使用WebClient.DownloadFile将它们单独下载到文件夹中。这可能需要很长时间。
据我所知,大部分时间是由于我的连接和下载数据。
有没有其他更有效的方法来解决这个问题,无论是C#HTML解析库还是其他的东西?优化网页抓取

回答

1

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

一个好方法是实现生产者/消费者模式:有一个线程可以获取并分析包含图像的HTML,然后将图像URL排队到像BlockingCollection之类的东西。让多个线程从队列中读取图像URL并同时下载图像。

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

如果你是弥补尖端,这个类,如果问题是非常适合TPL数据流(替代的BlockingCollection)。

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