Загрузите произвольное количество файлов с помощью wget из каталога для самостоятельной перенаправления

Мне нужно загрузить очень большое количество PDF-файлов (было бы утомительно, если не невозможно собрать и сопоставить все ссылки) с моего веб-сайта университета с помощью wget, со ссылками вроде этого:

http://example.edu/path_to_directory/directory/foobar.pdf 

Я использую следующую команду:

 wget -mk --no-check-certificate --load-cookies cookies.txt http://example.edu/arbitrary_link_to_directory/directory/ 

К сожалению, фактические каталоги, содержащие pdf-файлы, перенаправляются на страницу с ошибкой, и все, что я получаю, это куча html и css-файлов.

 http://example.edu/path_to_directory/directory/ 

будет в браузере перенаправить один на

 http://example.edu/path_to_directory/error/error.html 

Можно ли загружать все файлы, о которых идет речь, используя wget?

2 Solutions collect form web for “Загрузите произвольное количество файлов с помощью wget из каталога для самостоятельной перенаправления”

Когда я хочу загрузить кучу файлов с веб-сайта, который не упрощает (или активно затрудняет), я генерирую список URL-адресов файлов с чем-то вроде этого:

lynx -dump -listonly $URL | awk '/\.pdf/ {print $2}' > /tmp/pdflist.txt

Затем я обычно редактирую файл с vi чтобы удалить записи, которые я не хочу загружать, и, наконец, вытащить их с помощью wget:

wget --input-file=/tmp/pdflist.txt

Это хорошо работает для простых задач и часто работает достаточно хорошо для умеренно сложных задач … но для сложных задач, связанных с разбором запутанных html и следующих ссылок (и, возможно, с использованием файлов cookie), я напишу web-робот perl используя libwww-perl модуль (он же LWP ).

На вашем веб-сайте университета есть страница, содержащая ссылки на все файлы PDF? Или как вы знаете список имен файлов PDF?

В этом случае вам нужно будет написать скрипт под названием scraper, чтобы программно получить ссылки с этой страницы, а затем автоматически пропустить этот список и загрузить их с помощью wget или другого инструмента. Я бы предложил PHP или Python написать скребок. Вы сможете легко управлять возможной разбивкой по страницам на веб-сайте происхождения. Если вы используете PHP, вы можете просто скачать файлы с помощью

file_put_contents ('destination_filename', file_get_contents ('source_url');

  • Как безопасно загружать файлы в сценарии оболочки?
  • Что такое wget-идиома для curl -o?
  • Как использовать wget или другой инструмент для загрузки файла, для которого ссылка скрыта (активируется только при щелчке)
  • Сценарий оболочки для захвата одного или нескольких видео Wistia
  • Как отправить файл на FTP-сервер, который не приведет к успешному завершению соединения?
  • Wget - зеркальное отображение полного сайта с реквизитами на разных сайтах
  • Сохранение нескольких URL-адресов в текстовые файлы
  • Как загрузить файл на удаленную машину через SSH?
  • Печать как Firefox
  • Как получить доступ к http-серверу из сценария bash с существующим подключением tcp?
  • wget - Как загрузить рекурсивно и только определенные типы / расширения mime (т. е. только текст)
  • Linux и Unix - лучшая ОС в мире.