我正在开发一种从网页中抓取图像的快速工具。目前,我使用 WebClient 来获取页面的源数据,从源中解析图像 URL,然后使用 WebClient.DownloadFile 将它们单独下载到文件夹中。这可能需要相当长的时间。
我了解所需的大部分时间是由于我的连接和下载数据。
有没有其他更有效的方法来解决这个问题,无论是 C# HTML 解析库还是其他东西?
问问题
251 次
1 回答
1
您可以使用多个线程,这将打开到网页的多个并发 HTTP 连接。
一种好的方法是实现生产者/消费者模式:让一个线程获取并解析包含图像的 HTML,然后将图像 URL 排队到类似于 BlockingCollection 的东西中。让多个线程从队列中读取图像 URL 并同时下载图像。
http://msdn.microsoft.com/en-us/library/dd997371.aspx
如果您喜欢尖端技术,那么此类问题非常适合 TPL 数据流(BlockingCollection 的替代品)。
于 2012-12-17T19:47:00.833 回答