使用C#下载3000多张图像?

lee*_*n3o 5 c# asp.net url image download

我有一个大约3000个图像URL的列表,我需要将它们下载到我的桌​​面.

我是一个web开发人员,所以自然会写一个小的asp.net c#下载方法来做到这一点,但是明显的问题发生了,页面超时之前我几乎没有任何一个.

想知道是否有其他人知道我循环浏览所有图像URL并将其下载到文件夹的良好,快速和强大的方式?打开任何建议,WinForms,批处理文件,虽然我是两个新手.

任何帮助非常感谢

3Da*_*ave 11

编写C#命令行应用程序(或Winforms,如果这是您的倾向),并使用WebClient类检索文件.

以下是一些教程:

C#WebClient教程

使用WebClient下载文件

或者,只是谷歌C#WebClient.

您需要提供要下载的文件列表并循环遍历列表,发出每个文件的请求并保存结果,或者发出索引页面请求,使用HTML Agility Pack解析所有文件的图像标记,然后发出每个图像的请求,将结果保存在本地驱动器上的某个位置.

编辑

如果您只想这样做一次(如同在应用程序中,而不是应用程序的一部分),那么mbeckish的答案最有意义.

  • 绝对是最简单的.如果可以的话,使用`Parallel.ForEach()`来加速下载. (7认同)

Jor*_*ira 11

怎么样的wget?它可以下载文件中指定的URL列表.

wget -i c:\list-of-urls.txt
Run Code Online (Sandbox Code Playgroud)

  • 这可能不会对您产生影响,但请注意,当下载大小超过2(或可能是4)千兆字节时,旧版本的wget会出现问题.链接到版本几乎肯定会遇到这个问题.http://users.ugent.be/~bpuype/wget/是更新的. (3认同)

Str*_*ior 8

您可能希望使用像Orbit这样的现有下载管理器,而不是为此目的编写自己的程序.(亵渎,我知道)

我对Orbit非常满意.它允许您从文本文件中导入下载列表.它将管理连接,与多个连接并行下载每个文件的部分,以提高每次下载的速度.如果连接超时等,它将负责重试.看起来你需要付出很多努力才能从头开始构建这些功能.


mbe*_*ish 6

如果这只是一次性工作,那么一个简单的解决方案就是编写一个带有指向URL的img标签的HTML页面.

然后使用FireFox浏览它并使用扩展程序将所有图像保存到文件夹.