Я нашел только puf (Parallel URL Fetcher), но мне не удалось заставить его считывать URL из файла; что-то вроде
puf < urls.txt
тоже не работает.
На сервере установлена операционная система Ubuntu.
решение1
С использованиемGNU-параллельный,
$ параллельная -j${jobs}wget < urls.txt
или xargs
изGNU Findutils,
$ xargs -n 1 -P${jobs}wget < urls.txt
где ${jobs}
— максимальное количество , которое вы wget
хотите разрешить для одновременного запуска (установив значение , -n
чтобы 1
получить один wget
вызов на строку в urls.txt
). Без -j
/ будет запускать столько заданий одновременно, сколько ядер ЦП (что не обязательно имеет смысл для связанного сетевого ввода-вывода), и будет запускаться по одному за раз.-P
parallel
wget
xargs
Одной из полезных функций parallel
является xargs
раздельное хранение результатов одновременно выполняемых заданий, но если вас это не волнует, то, xargs
скорее всего, она будет предустановлена.
решение2
aria2 делает это.
http://sourceforge.net/apps/trac/aria2/wiki/UsageExample#Downloadfileslistedinafileconcurrently
Пример: aria2chttp://example.org/mylinux.iso
решение3
Вы можете реализовать это с помощью Python и библиотеки pycurl. Библиотека pycurl имеет интерфейс "multi", который реализует свой собственный четный цикл, позволяющий выполнять несколько одновременных подключений.
Однако интерфейс скорее похож на C и поэтому немного громоздкий по сравнению с другим, более «питоновским» кодом.
Я написал обертку для него, которая строит более полный браузероподобный клиент поверх него. Вы можете использовать это в качестве примера. Смотритеpycopia.WWW.клиентМодуль HTTPConnectionManager оборачивает мультиинтерфейс.
решение4
Часть страницы руководства GNU Parallel содержит пример параллельного рекурсивного wget.
https://www.gnu.org/software/parallel/man.html#example-breadth-first-parallel-web-crawler-mirrorer
HTML загружается дважды: один раз для извлечения ссылок и один раз для загрузки на диск. Остальной контент загружается только один раз.
Если вам не нужна рекурсивность, ответ эфемиента кажется очевидным.