Архив

Как массово скачать файлы по списку?

Как массово скачать файлы по списку?

Я опишу простой метод скачивания любых файлов с сети по заранее подготовленному списку.

Буду писать на примере того, как это можно применить к парсеру Датакол. Например, по техническим причинам, Вы не смогли скачать файлы или Вы не хотите грузить парсинг скачкой файлов, Вы просто собрали данные, а возможно просто забыли, что нужно скачать и потом опомнились).

Что нужно для начала?

Для начала нам нужно составить список полных URL к файлам, каждый с новой строки, например:
https://site.com/files/file_image_1.jpg
https://site.com/files/file_image_2.jpg
https://site.com/files/file_image_3.jpg
…

Сохраняйте его в текстовый файл, который назовем, к примеру “url-list.txt”.

Далее нам понадобится утилита WGET, думаю некоторые из Вас уже слышали о ней.

Переходим на сайт https://eternallybored.org/misc/wget/ и скачиваем нужную версию (32/64 бита). Последняя версия 1.21.3, только учтите, она не поддерживает XP, если у Вас такая, то берите прошлую версию.
Для лентяев приведу ссылки на последние версии
32 бита https://eternallybored.org/misc/wget/releases/wget-1.21.3-win32.zip
64 бита https://eternallybored.org/misc/wget/releases/wget-1.21.3-win64.zip

Подготовка к работе

Далее, просто распаковывайте архив в любую папку, например, c:\wget

Эта утилита консольная, у нее нет графического интерфейса, поэтому, чтобы запускать её из командной строки из любого места, нужно прописать в свойствах системы путь к папке:

  • Правой кнопкой мыши на значке Мой компьютер (или Win + Pause Break)
свойства ПК
Открываем свойства системы
  • Выбираем Дополнительные параметры системы и в открывшемся окне Переменные среды
Дополнительные параметры системы

Дополнительные параметры системы
  • В открывшемся окне выделяем переменную Path и нажимаем изменить, и создаем новой значение с нашим путем к папке c:\wget\
  • Сохраняем
добавление системного пути

Если Вам кажется это слишком сложным и Вам это нужно на один раз, то можете не делать, а сразу приступить к следующим действиям.

Собираем все и начинаем

Итак, приступим, имеем следующие исходные данные:

  1. Файл со списком URL к файлам, предположим, что он у нас в корне диска С – c:\url-list.txt
  2. Создаем папку, куда будем скачивать файлы, предположим c:\files\
  3. Распаковали файлы с архива утилиты в папку c:\wget\

Когда эти 3 пункта готовы, открываем консоль. Для этого нажимаем комбинацию Win + R и вводим cmd и нажимаем enter
Сразу напишу готовую команду, а ниже расскажу, что к чему:

wget -i c:\url-list.txt --secure-protocol=auto -nc -c -P c:\files\

Если Вы не прописывали путь в свойствах системы, по моей инструкции выше, то для старта wget Вам нужно указать полный путь к ней, т.е
c:\wget\wget.exe вместо wget и команда для Вас будет выглядеть так

c:\wget\wget.exe -i c:\url-list.txt --secure-protocol=auto -nc -c -P c:\files\

Теперь разбираем переменные:

  • -i и дальше путь для файла со списком URL для скачивания
  • –secure-protocol=auto – это используем, если на сайте защищенный протокол HTTPS, если простой HTTP, то убирайте эту команду
  • -nc – если файл уже есть, и он скачан полностью, то он не будет загружен заново
  • -c – если файл закачан не полностью, то будет продолжена закачка
  • -P и дальше папка, куда сохранять данные

Кому интересны все команды, а их ОЧЕНЬ много, то просто набираем в консоли
wget -h или c:\wget\wget.exe -h

Если Вам важна структура сохранения файлов как на источнике, то добавьте команду -x.

После того, как команда прописана, нажимаете enter и пойдет загрузка в указанную папку. На экране Вы будете видеть ЛОГ операций.

P.S строку для запуска лучше не писать в консоли, а приготовить ее заранее в любом редакторе, хоть в блокноте. Затем копируйте ее и в консоли нажимайте просто правую кнопку мыши или комбинацию Shift + Insert или Ctrl + V (эта комбинация раньше в консоли Windows не работала, сейчас на Win 10 работает, может работает и в ранних версиях, не знаю, когда добавили эту поддержку)

P.S чтобы собирать данные с серьезных порталов, однозначно нужны платные прокси.
Хорошие прокси от 33р за шт можно купить тут

И напоминаю, что по моей партнерской ссылке Вы получите 20% скидки на любой тариф, при покупке Датакол. Например, годовая лицензия будет стоить 6070руб. вместо 7590р.

Нужна доработка или готовое решение?

Опишите задачу — отвечу в течение дня и назову сроки и стоимость.

Комментарии: 0

  1. Спасибо за статью. Сам пользуюсь этой программой уже давно, пока разобрался – кучу времени потратил, а тут все просто и ясно написано и разъяснено.

  2. Если вдруг выходит ошибка связанная с сертификатом безопасности, то просто введите такую команду:
    
    wget -i c:\url-list.txt --no-check-certificate -nc -c -P c:\files\
    

    Спасибо автору!

  3. Спасибо, реально работает, довольно быстро… 5 минут потратил, 1500 фото еще и по папкам…

  4. Что делать если ссылка ведет не на сам файл и выглядит вот так index.php?page=ddownload&sn=1546971

  5. Почему-то файл в UTF-кодировке не принимал, потребовал ANSI. Список файлов создавал в Excel, чтобы автоматически набрать имена от 00000001.jpg до 00000332.jpg

  6. ваш wget не умеет задавать одновременно название для файла и папку, в которую его кинуть. Редкостный зашквар! Можно было бы и упомянуть об этом.

    1. Зашквар это Ваш комментарий без какой-либо конкретики. И он такой же мой как и Ваш. Я Вам ничего не должен. Есть описание по команде –help всех команд. Я привел пример своего использования wget.

      1. Уважаемый Администратор. Я уже не раз слышал вот эту фразу: “я вам ничего не должен”. Обычно я расцениваю это так, что человек не отвечает за свой базар. Так, накарябал что-то на своем сайте без всяких обязательств. И плевать он хотел на читателей.

        Очень хорошо, я уважаю такую позицию. Действительно, оказалось полезным – хорошо, нет – значит, нет. И я, собственно, никаких претензий вам не предъявляю. Тем более, я нигде не сказал, что вы мне что-то должны. Я сказал, что.. ой, у вас тут еще и

      2. ограничение на количество символов, а вы ждете от меня какой-то конкретики. Короче, я хочу сказать, что можно было бы и упомянуть об этом – я бы не стал тратить время на эту инвалидную программу, не имеющую базового функционала. Попробуйте использовать одновременно -O и -P в одном запросе (т.е. попробуйте указать имя файла и папку сохранения), и увидите, что получится.
        И зашкваром я назвал не ваш сайт, а только лишь эту программу.

      3. Но дело в том, что и вы уважайте мою позицию: я тоже имею право высказать всё, что я об этом думаю. Я за свободу слова.

  7. как в самом списке URL для wget указать скачивание каждого файла в конкретную папку? спасибо.

    1. Я не знаю такого способа. Только сохранение структуры URL, команда -x

  8. Программа отличная, сохраняет структуру папок через “-х”
    Другие копировальни сайтов вроде HTtrack не так точно сохраняют порядок папок.

    Единственный нюанс – ею надо пользоваться без активных других парсеров, иначе работает очень медленно

  9. еще одно спасибо)
    вы б какую-нить рекламу\баннер повесили бы, хоть покликал бы в знак благодарности 🙂

    1. Если Вам понравилось, то комментария для меня достаточно ) Можете поделиться статьей.

  10. как задать новые имена скаченным файлам? Не сохраняет новые файлы т.к. у всех одинаковое имя

    1. Для присвоения имени нужно использовать ключ -O. Но с массовым переименованием не так просто. Можно попробовать такой скрипт для запуска, если у вас есть список URL-адресов в файле

      @echo off
      setlocal enabledelayedexpansion

      set "url_file=urls.txt"
      set "output_base=file"
      set "extension=.jpg"
      set "counter=1"

      for /F "tokens=*" %%i in (%url_file%) do (
      set "output_file=%output_base%!counter!%extension%"
      wget -O "!output_file!" "%%i"
      set /a counter+=1
      )

      endlocal

      url_file — файл, содержащий список URL-адресов.
      output_base и extension — базовая часть имени файла и расширение.
      counter — счетчик для создания уникальных имен файлов.
      Этот скрипт будет читать URL-адреса из файла urls.txt и сохранять их с уникальными именами, такими как file1.txt, file2.txt и т.д.

Оставить комментарий