我需要一种有效的方式从文本文件中的URL列表下载大量(百万)小文件。我想用新名称(从另一个文本文件或任何地方)保存文件,因为URL很长,动态生成乱码,并会导致最大文件名长度等问题。下载大量小文件
我第一次尝试wget,但是有限的事实,你可以从一个文本文件,例如指定的URL列表:
wget.exe -i myURLlist.txt
或重命名新名称的单个下载的文件,如:
wget.exe -O myfilename1.jpg http://www.foo.com/longgibberish976876....2131.jpg
但不能同时使用。因此我的脚本必须为每个文件单独执行wget(使用第二种方法)。由于每次重新启动TCP连接和其他开销(如果您在文本文件中传递URL列表,wget尝试重新使用连接,但我无法指定文件名),这非常慢。
然后我尝试了curl,它可以让你通过命令行参数传递多个URL和文件名。例如:
curl.exe
-o myfilename1.jpg http://www.foo.com/longgibberish976876....2131.jpg
-o myfilename2.jpg http://www.foo.com/longgibberish324....32432.jpg
-o .....
这是一个速度改进,因为curl会尝试为传递给它的所有URL重复使用相同的连接。但是,在开始跳过文件之前,我仅限于批量处理大约20个URL。我没有确认为什么发生这种情况,但怀疑命令行中的最大长度可能已经超过。在任何情况下,这当然不会扩展到一百万左右的文件。我没有找到像使用wget一样的方式传递文本文件来卷曲的选项。
剩下哪些选项?有没有我已经尝试过的2个程序的一些语法,我不知道,还是我需要其他工具?
我很害怕你正在打墙,你需要跳过一些自定义编程。既然SO是一个程序员回答编程问题的在线社区,我假设你不害怕进入自定义解决方案的编程。如果您遇到一些特定的编程问题,请使用您选择的语言进行试用并返回。 –