Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 优化Web爬网_C#_Image_Performance_Webclient - Fatal编程技术网

C# 优化Web爬网

C# 优化Web爬网,c#,image,performance,webclient,C#,Image,Performance,Webclient,我正在开发一种快速工具,可以从网页上抓取图像。目前,我使用WebClient获取页面的源数据,从源代码中解析图像URL,然后使用WebClient.DownloadFile将它们单独下载到文件夹中。这可能需要很长时间。 我知道大部分时间都是由于我的连接和下载数据造成的。 是否有其他更有效的方法来实现这一点,无论是C#HTML解析库还是其他什么?您可以使用多个线程,这将打开多个到网页的并发HTTP连接 一个好的方法是实现生产者/消费者模式:让一个线程获取并解析包含图像的HTML,然后将图像URL排

我正在开发一种快速工具,可以从网页上抓取图像。目前,我使用WebClient获取页面的源数据,从源代码中解析图像URL,然后使用WebClient.DownloadFile将它们单独下载到文件夹中。这可能需要很长时间。
我知道大部分时间都是由于我的连接和下载数据造成的。

是否有其他更有效的方法来实现这一点,无论是C#HTML解析库还是其他什么?

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

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

如果您是最前沿的,这个类If问题非常适合于TPL数据流(BlockingCollection的替代方案)