Подтвердить что ты не робот

Почему wget загружает только index.html для некоторых веб-сайтов?

Я пытаюсь использовать команду wget:

wget -p http://www.example.com 

чтобы получить все файлы на главной странице. Для некоторых веб-сайтов он работает, но в большинстве случаев он загружает только index.html. Я пробовал команду wget -r, но она не работает. Кто-нибудь знает, как получить все файлы на странице, или просто дать мне список файлов и соответствующих URL-адресов на странице?

4b9b3361

Ответ 1

Wget также может загружать весь сайт. Но поскольку это может привести к большой нагрузке на сервер, wget будет подчиняться файлу robots.txt.

 wget -r -p http://www.example.com

Параметр -p сообщает wget включать все файлы, включая изображения. Это будет означать, что все HTML файлы будут выглядеть так, как им следует делать.

Итак, что, если вы не хотите, чтобы wget выполнял файл robots.txt? Вы можете просто добавить -e robots = off в команду следующим образом:

 wget -r -p -e robots=off http://www.example.com

Так как многие сайты не позволят вам загружать весь сайт, они проверят проверку вашего браузера. Чтобы обойти это, используйте -U mozilla, как я объяснил выше.

 wget -r -p -e robots=off -U mozilla http://www.example.com

Многим владельцам веб-сайтов не понравится тот факт, что вы загружаете весь свой сайт. Если сервер видит, что вы загружаете большое количество файлов, он может автоматически добавить вас в черный список. Дорога вокруг этого - подождать несколько секунд после каждой загрузки. Способ сделать это с помощью wget - включить --wait = X (где X - количество секунд.)

вы также можете использовать параметр: --random-wait, чтобы wget выбрал случайное число секунд для ожидания. Чтобы включить это в команду:

wget --random-wait -r -p -e robots=off -U mozilla http://www.example.com

Ответ 2

Во-первых, чтобы прояснить вопрос, цель состоит в том, чтобы загрузить index.html плюс все необходимые части этой страницы (изображения и т.д.). Параметр -p эквивалентен --page-requisites.

Причина, по которой реквизиты страницы не всегда загружаются, заключается в том, что они часто размещаются в другом домене с исходной страницы (например, CDN). По умолчанию wget отказывается посещать другие хосты, поэтому вам нужно включить размещение хоста с помощью параметра --span-hosts.

wget --page-requisites --span-hosts 'http://www.amazon.com/'

Если вам нужно загрузить index.html и загрузить все реквизиты страницы из локальной версии, вам нужно добавить параметр --convert-links, чтобы URL-адреса в атрибутах img src (например, ) переписываются в относительные URL-адреса, указывающие на локальные версии.

Кроме того, вы можете также сохранить все файлы в одном каталоге "хост", добавив параметр --no-host-directories или сохранить все файлы в одном плоском каталоге, добавив параметр --no-directories.

Использование --no-directories приведет к загрузке большого количества файлов в текущий каталог, поэтому вы, вероятно, захотите указать имя папки для выходных файлов, используя --directory-prefix.

wget --page-requisites --span-hosts --convert-links --no-directories --directory-prefix=output 'http://www.amazon.com/'

Ответ 3

Предоставленная вами ссылка - домашняя страница или /index.html, поэтому ясно, что вы получаете только страницу index.html. Для фактической загрузки, например, для файла "test.zip", вам нужно добавить точное имя файла в конце. Например, для загрузки файла test.zip используйте следующую ссылку:

wget -p domainname.com/test.zip

Загрузить полный веб-сайт с помощью wget --mirror

Ниже приведена командная строка, которую вы хотите выполнить, когда вы хотите загрузить полный веб-сайт и сделать доступным для локального просмотра.

wget --mirror -p --convert-links -P./LOCAL-DIR http://www.example.com

  • -mirror: включить параметры, подходящие для зеркалирования.

  • -p: загрузите все файлы, необходимые для правильного отображения данной HTML-страницы.

  • -convert-links: после загрузки конвертировать ссылки в документ для локального просмотра.

  • -P./LOCAL-DIR: сохранить все файлы и каталоги в указанном каталоге

Загрузка только определенных типов файлов с помощью wget -r -A

Вы можете использовать это в следующих ситуациях:

  • Загрузите все изображения с веб-сайта,

  • Загрузите все видео с веб-сайта,

  • Загрузите все файлы PDF с веб-сайта.

wget -r -A.pdf http://example.com/test.pdf

Ответ 4

Другая проблема может заключаться в том, что сайт, на который вы зеркалируете, использует ссылки без www. Поэтому, если вы укажете

wget -p -r http://www.example.com

он не будет загружать связанные страницы (стажеры), потому что они из "другого" домена. Если это так, используйте

wget -p -r http://example.com

вместо (www).

Ответ 5

Я знаю, что эта ветка старая, но попробуйте, что упоминается Ritesh:

- нет-куки

Это сработало для меня!

Ответ 6

Если вы ищете index.html в wget manual, вы можете найти опцию --default-page=name, которая index.html по умолчанию. Вы можете, например, перейти на index.php.

--default-page=index.php

Ответ 7

Если вы получаете только index.html, и этот файл выглядит так, как будто он содержит только двоичные данные (т.е. нет читаемого текста, только управляющие символы), то сайт, вероятно, отправляет данные с использованием сжатия gzip.

Вы можете подтвердить это, запустив cat index.html | gunzip, чтобы увидеть, выводит ли он читаемый HTML.

Если это так, то wget рекурсивная функция (-r) не будет работать. Существует патч для wget для работы с сжатыми данными gzip, но он пока не находится в стандартной версии.