С помощью веб-браузера (IE или Chrome) я могу сохранить веб-страницу (.html) с помощью Ctl-S, проверить ее в любом текстовом редакторе и просмотреть данные в табличном формате. Один из тех номеров, которые я хочу извлечь, но для многих, многих веб-страниц, слишком много, чтобы сделать вручную. Поэтому я хотел бы использовать WGET, чтобы получать эти веб-страницы одну за другой, и написать другую программу для анализа .html и получения нужного мне числа. Но файл .html, сохраненный WGET при использовании того же URL-адреса, что и браузер, не содержит таблицу данных. Почему бы нет? Как будто сервер обнаруживает, что запрос поступает от WGET, а не от веб-браузера, и предоставляет скелетную веб-страницу без таблицы данных. Как я могу получить ту же самую веб-страницу с WGET? - Спасибо!
БОЛЬШЕ ИНФОРМАЦИИ:
Пример URL я пытаюсь принести это: http://performance.morningstar.com/fund/performance-return.action?t=ICENX®ion=usa&culture=en-US где строку ICENX является символом тикера взаимного фонда , который я буду менять на любой из множества различных символов тикера. Это загружает таблицу данных при просмотре в браузере, но таблица данных отсутствует, если извлекается с помощью WGET.
Ответы:
Как отметил roadmr , таблица на этой странице генерируется с помощью javascript. wget не поддерживает javascript, он просто выгружает страницу, полученную с сервера (т.е. до запуска любого кода javascript), поэтому таблица отсутствует.
Вам нужен безголовый браузер, который поддерживает javascript, например, phantomjs :
с помощью save_page.js:
Тогда, если вы просто хотите извлечь какой-либо текст, проще всего сделать страницу с помощью w3m:
и / или измените скрипт phantomjs так, чтобы он просто сбрасывал то, что вам интересно.
источник
Вы можете скачать полный сайт, используя
wget --mirror
Пример:
Приведенная выше командная строка, которую вы хотите выполнить, когда вы хотите загрузить полный веб-сайт и сделать его доступным для локального просмотра.
Опции:
--mirror
включает опции, подходящие для зеркалирования.-p
загружает все файлы, необходимые для правильного отображения данной HTML-страницы.--convert-links
после загрузки преобразуйте ссылки в документе для локального просмотра.-P ./LOCAL-DIR
сохраняет все файлы и каталоги в указанный каталог.Подробнее о параметрах Wget Подробнее в этой статье: Обзор обо всех командах wget с примерами или посмотрите справочную страницу Wget .
источник
Вместо того
--recursive
, чтобы просто «пауковать» каждую ссылку в вашем URL, используйте--page-requisites
. Должен вести себя точно так же, как параметры, которые вы описываете в графических браузерах.Для получения дополнительной информации,
man wget
найдите и найдите эту--page-requisites
опцию (используйте «/» для поиска во время чтения страницы руководства ).источник
Если ответ сервера различается в зависимости от запрашиваемого источника, это происходит главным образом из-за переменной HTTP_USER_AGENT (просто текстовая строка), которой предоставляется запрос из запрашивающего источника, информирующего сервер о технологии.
Вы можете проверить ваш агент браузера здесь -> http://whatsmyuseragent.com
Согласно руководству WGET этот параметр должен выполнять свою работу
--user-agent=AGENT
.Если это не помогает, то есть обработка JavaScript может потребоваться для получения той же страницы, что и браузер, или, возможно, соответствующий запрос с параметрами GET, чтобы сервер подготовил ответ, который не требует JavaScript для заполнения страницы.
источник