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

Загрузите произвольное количество файлов с помощью 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?

решение1

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

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

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

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

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

решение2

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

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

file_put_contents('имя_файла_назначения', file_get_contents('url_источника');

Связанный контент