wget с ключами -r и -H довольно опасен, поскольку может легко попасть на большой сайт (возможно, через рекламное окно или окно поиска) и охватить весь Интернет. Хитрость для загрузки всех зависимостей для одной страницы состоит в том, что вы не обязательно хотите рекурсию, но вы действительно хотите загрузить предварительные условия страницы, а также разрешить wget охватить хосты, как в:
wget -H -N -kp http://<site>/<document>
Однако, с помощью этой команды, теперь вы не получите рекурсивное поведение.
Таким образом, чтобы объединить их, мы можем использовать первый wget для рекурсивного поиска страниц, хотя только из этого одного домена; и второй wget, который охватывает хосты, но не получает рекурсивные страницы:
wget -mkp http://example.com
find example.com/ -name '*.html*' -exec wget -nc -HNkp http://{} \;
Важным моментом является -nc - он сообщает wget действовать так, как будто он скачал его с сервера, но вместо этого использует локальную копию на вашем диске, что означает, что ссылки должны быть уже преобразованы. Далее он извлечет все ресурсы; и, наконец, он должен закрыть исходный файл (для которого требуется строка запроса) и правильно назвать второй. Обратите внимание, что этот файл дважды загружает файл, чтобы он мог исправить - однако место, где я застрял - -k, преобразует относительные URL, которые он не загружал, обратно в абсолютные URL. Поэтому после второго шага все ссылки теперь снова являются удаленными URL.
К счастью, эту проблему немного проще решить вручную, потому что все абсолютные ссылки должны начинаться с "http://example.com/",, так что может быть возможно запустить простой сценарий" sed "для исправления ссылок. .
Что бы я предложил, если вы знаете, что домены, которые вы ожидаете включить в example.com, это использовать опцию -D, чтобы указать только те домены, с которых вы ожидаете загрузку, и ничего больше. Например, с google.com вы также включаете gstatic.com.
Здесь есть еще один человек с аналогичным вопросом , но загрузка удаленных изображений, похоже, не решена.
В этой теме предлагается просто прикусить пулю и выполнить "-r -l 1 -H", но также использовать -A для ограничения файлов, которые фактически сохраняются в изображениях или типах css: