Как загрузить весь веб-сайт для просмотра в автономном режиме с помощью Wget?
Я хотел бы загрузить весь относительно небольшой веб-сайт (~50 страниц) для просмотра в автономном режиме.
Я мог бы вручную открыть каждую страницу в браузере и загрузить их через ctrl
+ s
, и это привело бы к желаемому результату. Но это заняло бы очень много времени с веб-сайтом такого размера, заняло бы много времени на организацию, и было бы много места для человеческих ошибок (отсутствующие страницы, страницы, помещенные в неправильные каталоги и т.д.)
Wget и его рекурсивная функциональность кажется отличным решением, но у меня возникли проблемы с получением желаемого результата.
Желаемый результат.
Каждая отдельная страница в одном домене и все необходимые ресурсы каждой страницы (которые могут находиться в других доменах) для загрузки. Больше ничего.
Проблема
Множество необходимых ресурсов находится на внешних доменах. Эти домены многочисленны, могут измениться в любое время, и получить точный список непросто из.
Моя лучшая попытка
Я попробовал эту команду:
wget -r -k -p -H -l inf -w 1 --limit-rate=40k -H -e robots=off https://my.desired.website/
-
-r
используется для рекурсивной загрузки страниц. -
-k
используется для преобразования ссылок для упрощенного просмотра в автономном режиме. -
-p
используется для указания Wget загружать необходимые ресурсы. -
-H
позволяет охватывать хост без ограничений. -
-l inf
используется для уверенности в том, что каждая отдельная страница на нужном веб-сайте будет загружена, независимо от того, насколько глубоко она находится иерархия это может быть. -
-w 1 --limit-rate=40k
используется для ограничения скорости и скорости загрузки, чтобы не быть грубым по отношению к хостам. -
-e robots=off
говорит Wget игнорировать"robots.txt "файлы и ссылки "не подписываться".
К сожалению, из-за флага -H
эта команда не только загружает каждую отдельную страницу нужного веб-сайта, но и продолжает переходить по всем внешним ссылкам и загружать все найденные веб-сайты целиком. Это, скорее всего, приведет к попытке загрузить всю общедоступную веб.
Однако без флага -H
он не загружает внешние ресурсы, необходимые для просмотра веб-сайта (т.Е. Изображения, JS, CSS и т.д., Размещенные на внешних доменах)
Затем вы можете сказать, что я должен использовать флаг -D
и внести в белый список все домены, в которых хранятся внешние ресурсы. Это также не лучшее решение, потому что у меня нет полного контроля над тем, где размещен веб-сайт... список внешних доменов, на которых размещены ресурсы, может измениться в любой момент времени, и я не могу надежно найти каждый домен вручную, не пропуская ни одного.
"Реальный" вопрос
Поэтому, по сути, мой вопрос таков:
Возможно ли разрешить Wget охватывать хосты только при загрузке необходимых ресурсов?
Если нет, то есть ли инструмент, который позволяет этот тип загрузки?