我需要一種有效的方式從文本文件中的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是一個程序員回答編程問題的在線社區,我假設你不害怕進入自定義解決方案的編程。如果您遇到一些特定的編程問題,請使用您選擇的語言進行試用並返回。 –