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

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

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

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

 Fabien20 июн. 2012 г., 18:50
У вас есть пример URL?
 Henk Holterman01 сент. 2017 г., 11:32
 Emil Vikström20 июн. 2012 г., 19:07
Чем это отличается от вашегоprevious question? Если это та же проблема, отредактируйте свой старый вопрос, чтобы прояснить его.

Ответы на вопрос(6)

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

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

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

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

вместо (безwww).

 15 сент. 2016 г., 14:05
Правильное наблюдение. Это коренная причина моей проблемы.

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
 24 мар. 2013 г., 08:55
тоже самое. Только index.html
 Jay H20 июн. 2012 г., 19:28
Спасибо за Ваш ответ. Я попробовал 3 способа, которые вы упомянули в некоторых общих URL-адресах (например, amazon.com), но я получил только index.html. У вас есть другие предложения?
 03 нояб. 2017 г., 14:14
В дополнение к--random-wait также может быть использован параметр-w X гдеX это время в секундах, и оно используется в качестве базового значения для вычисления случайного времени ожидания.
 25 авг. 2014 г., 00:47
@JayH старайтесь не использовать адрес, который будет перенаправлен. I.E, если вы используетеhttp://amazon.com он не будет работать, потому что вы будете перенаправлены на сайт www.amazon.com, но если вы будете использоватьhttp://www.amazon.com начнется загрузка всего сайта. Возможность не следовать файлу роботов - это не так "вежливо" так что это не будет работать так хорошо, как вы можете себе представить.
 14 апр. 2017 г., 18:17
Я ненавижу, как самый ценный ответ внизу сайта

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

--no-cookies

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

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

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

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

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

При желании вы также можете сохранить все файлы на одном & quot; хосте & quot; каталог, добавив--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/'
 20 сент. 2016 г., 17:57
@EvanHu Добавление белого списка доменов здесь не поможет, так как wget должен иметь возможность извлекать реквизиты страницы, где бы они ни размещались.
 26 авг. 2014 г., 09:36
@InsaneCoder Добавление--mirror Вариант является наиболее простым и может быть достаточно для ваших нужд.
 26 авг. 2014 г., 09:24
@InsaneCoder Возможно, вы захотите начать отдельный вопрос для этого и показать, что вы пробовали, поскольку рекурсивная выборка - это совсем другой набор проблем, и (насколько я понимаю) - это не то, о чем спрашивал исходный вопрос.
 23 авг. 2014 г., 21:00
Спасибо за ценный ответ. Не могли бы вы добавить дополнительную информацию, чтобы сделать ее более общей, прежде чем я смогу присудить вам награду. Как, например,http://indiabix.com/civil-engineering/questions-and-answers/ по этой ссылке я хочу, чтобы wget посетил каждую категорию / главу и загрузил все изображения с каждой страницы в каждом разделе (на левой боковой панели). Обратите внимание, под изображениями я подразумеваю все изображения, включая изображения математических формул, включенных в вопросы.Problem is that the download stops after downloading index.html. A working example for this case would be great !!!
 15 сент. 2016 г., 14:02
Будьте осторожны в использовании--span-hosts, добавлять-D<domain-list> ограничить охват определенными доменами.

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

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

Если это так, тоwgetрекурсивная особенность (-r) не будет работать. Eстьпластырь заwget работать со сжатыми GZIP-данными, но в стандартном выпуске их пока нет.

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

--default-page=index.php

Ваш ответ на вопрос