Сохранить одну веб-страницу (с фоновыми изображениями) с помощью Wget
Я хочу использовать Wget для сохранения отдельных веб-страниц (не рекурсивно, не целых сайтов) для справки. Очень похоже на "Веб-страницу Firefox".
Моя первая проблема: я не могу заставить Wget сохранить фоновые изображения, указанные в CSS. Даже если бы он сохранил файлы фоновых изображений, я не думаю, что --convert-links преобразует URL-адреса фоновых изображений в файле CSS, чтобы они указывали на локально сохраненные фоновые изображения. Firefox имеет ту же проблему.
Вторая проблема: если на странице, которую я хочу сохранить, есть изображения, размещенные на другом сервере (например, реклама), они не будут включены. --span-hosts не решает эту проблему с помощью строки ниже.
Я использую:wget --no-parent --timestamping --convert-links --page-requisites --no-directories --no-host-directories -erobots=off http://domain.tld/webpage.html
4 ответа
Фактически, чтобы загрузить одну страницу и все ее реквизиты (даже если они существуют на отдельных веб-сайтах) и убедиться, что партия отображается правильно локально, этот автор любит использовать несколько опций в дополнение к '-p':
wget -E -H -k -K -p http://www.example.com/
Также в случае robots.txt
запрещает добавить -e robots=off
wget
Команда предлагает вариант --mirror
, который делает то же самое, что и:
$ wget -r -N -l inf --no-remove-listing
Вы также можете добавить -x
создать целую иерархию каталогов для сайта, включая имя хоста.
Возможно, вы не смогли бы найти это, если вы не используете новейшую версию wget
тем не мение.
Я сделал Webtography для аналогичной цели: https://webjay.github.io/webtography/
Он использует Wget и помещает сайт в хранилище вашей учетной записи GitHub.
Я использую эти аргументы:
--user-agent=Webtography
--no-cookies
--timestamping
--recursive
--level=1
--convert-links
--no-parent
--page-requisites
--adjust-extension
--max-redirect=0
--exclude-directories=blog
https://github.com/webjay/webtography/blob/master/lib/wget.js#L15-L26
Это звучит как wget
и Firefox не анализирует CSS для ссылок, чтобы включить эти файлы в загрузку. Вы можете обойти эти ограничения, написав все, что можете, и написав сценарий извлечения ссылок из любого CSS или Javascript в загруженных файлах, чтобы создать список файлов, которые вы пропустили. Затем второй прогон wget
в этом списке ссылок можно получить все, что было пропущено (используйте -i
флаг, чтобы указать URL-адрес списка файлов).
Если вам нравится Perl, в CPAN есть модуль CSS::Parser, который может дать вам простой способ извлечения ссылок таким способом.
Обратите внимание, что wget
анализирует только определенную HTML-разметку (href
/src
) и css uris (url()
) определить, какие реквизиты страницы получить. Вы можете попробовать использовать надстройки Firefox, такие как DOM Inspector или Firebug, чтобы выяснить, добавляются ли сторонние изображения, которые вы не получаете, через Javascript - если это так, вам нужно прибегнуть к скрипту или плагину Firefox, чтобы получить их тоже.