Как автоматизировать загрузку файлов?

Как автоматизировать загрузку файлов?

Я получил книгу, которая имела пропуск для доступа к цифровым версиям сканов высокого разрешения многих произведений искусства в книге. Удивительно! К сожалению, представление всего этого — 177 страниц по 8 изображений на каждой со ссылками на zip-файлы jpg. Крайне утомительно просматривать, и я бы с удовольствием мог получить все файлы сразу, а не сидеть и кликать по каждому отдельно.

archive_bookname/index.1.htm - archive_bookname/index.177.htm каждая из этих страниц имеет по 8 ссылок на файлы

ссылки на файлы, такие как <snip>/downloads/_Q6Q9265.jpg.zip, <snip>/downloads/_Q6Q7069.jpg.zip, <snip>/downloads/_Q6Q5354.jpg.zip., которые не совсем в порядке. Я не могу получить список каталогов родительской /downloads/папки.

Кроме того, файл находится за стеной входа в систему, поэтому создание инструмента, не требующего использования браузера, может быть затруднительным без знания того, как воссоздать информацию о сеансе.

Я немного изучил wget, но я совсем запутался и не знаю, поможет ли он мне с этим. Есть ли у вас какие-нибудь советы, как с этим справиться? Может ли wget сделать это для меня автоматически?

решение1

Вы можете указать входной HTML-файл с помощью

wget -F -i <file>

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

for i in <whereYouDumpedFiles>/*.html
do
  wget -F -B <base-url> -i $i
done

альтернативно

вы можете просто выгрузить ссылки в файл (разделенные символами новой строки) любым способом и сделать это:

wget -i <url-file>

Хороший способ получить доступ к этим ссылкам:

lynx -hiddenlinks=ignore -nonumbers -listonly --dump <relevant-url> \
 | sort | uniq | sed /<regexp-pattern-of-urls-you-want>/\!d

возможно в цикле for, который добавляется к 'url-file'

решение2

Использование python может быть проще. Так что это решение с использованием python. Если python для вас не вариант, то игнорируйте. :)

Я предполагаю, что копирование данных с сайта законно.

Напишите простой скрипт Python для archive_bookname/index.1-177.htmих циклического перебора и очистки с помощьюBeautifulSoup, найдите ссылки с помощью селекторов классов CSS или простого сопоставления регулярных выражений, затем используйтеurllib.urlretrieve()чтобы получить файлы. Вот как я бы это сделал.

решение3

Или вы можете просто использовать Perl и его замечательный модуль www::mechanize. Это действительно просто собрать что-то вместе, и есть тонны примеров в официальной документации CPAN.

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