Я получил книгу, которая имела пропуск для доступа к цифровым версиям сканов высокого разрешения многих произведений искусства в книге. Удивительно! К сожалению, представление всего этого — 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.