Как получить WGET для загрузки точно такой же HTML-страницы, как браузер

Начиная с Xcode 8.2, вы также можете сохранить скриншот с помощью следующей команды:

xcrun simctl io booted screenshot

Дополнительная информация в этом блоге: https://medium.com/ @ hollanderbart / New-функции-в-Xcode-8-2-тренажер-fc64a4014a5f # .bzuaf5gp0

29
задан 08.05.2020, 00:10

5 ответов

Если ответ сервера отличается в зависимости от запрашиваемого источника, это происходит главным образом из-за переменной HTTP_USER_AGENT (просто текстовая строка), которая предоставляется запросом из запрашивающего источника, информирующего сервер о технологии.


  1. Вы можете проверить ваш агент браузера здесь -> http://whatsmyuseragent.com

  2. Согласно WGET В ручном режиме этот параметр должен выполнять работу --user-agent=AGENT.


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

0
ответ дан 08.05.2020, 00:11

Вы можете загрузить полный веб-сайт, используя wget --mirror

Пример:

wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL

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

Опции:

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

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

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

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

Подробнее о параметрах Wget Подробнее в этой статье: Обзор обо всех командах wget с примерами или проверить Справочную страницу Wget .

0
ответ дан 08.05.2020, 00:11
  • 1
    Этот won' t работают с JavaScript, представленным содержанием. Для этого you' ll должен использовать phantomjs, как отвечено lemonsqueeze. – Daniel Macias 08.05.2020, 00:12
  • 2
    Этот cmd будет идти через все под-URL также, которые загрузят ресурсы, которые не нужны для рендеринга данной веб-страницы. – Aniket G 08.05.2020, 00:12

Это параметр --recursive. Он загрузит все, иногда больше того, что вы хотите.

wget --recursive http://url.com
0
ответ дан 08.05.2020, 00:12
  • 1
    Сделайте не использование wget - рекурсивный, чтобы попытаться решить это. Это загрузит содержание каждой внешней ссылки на сайте к Вашему каталогу. Это не получит управляемое JavaScript содержание, попросившее относительно. – kAhmij 08.05.2020, 00:13

Как отметил roadmr , таблица на этой странице генерируется с помощью javascript. wget не поддерживает javascript, он просто выгружает страницу, полученную с сервера (то есть до запуска любого кода javascript), поэтому таблица отсутствует.

Вам нужен безголовый браузер, который поддерживает javascript, например phantomjs :

$ phantomjs save_page.js http://example.com > page.html

с save_page.js:

var system = require('system');
var page = require('webpage').create();

page.open(system.args[1], function()
{
    console.log(page.content);
    phantom.exit();
});

Тогда, если вы просто хотите извлечь какой-то текст, самым простым может быть рендеринг страницы с помощью w3m:

$ w3m -dump page.html

и / или изменение скрипта phantomjs, чтобы просто выгрузить то, что вам интересно.

0
ответ дан 08.05.2020, 00:13
  • 1
    JS генерировал работу привычки ссылок с этим – Aniket G 08.05.2020, 00:13
  • 2
    Это также don' t работа, например cotrino.com/lifespan – Mig1978 08.05.2020, 00:14
  • 3
    Это решение только для загрузки страниц от указанных URL. Как делают Вы передаете wget' по каналу; s механизм проверки сайта с ним? Кроме того, на что сценарий был бы похож с бездисплейным хромом? – Aniket G 08.05.2020, 00:14
  • 4
    2018: Проект PhantomJS приостановлен до следующего приказа: ( – ziggy wiggy 08.05.2020, 00:15

Вместо --recursive, который будет просто «пауковать» каждую ссылку в вашем URL, используйте --page-requisites. Должен вести себя точно так же, как параметры, которые вы описываете в графических браузерах.

       This option causes Wget to download all the files that are
       necessary to properly display a given HTML page.  This includes
       such things as inlined images, sounds, and referenced stylesheets.

       Ordinarily, when downloading a single HTML page, any requisite
       documents that may be needed to display it properly are not
       downloaded.  Using -r together with -l can help, but since Wget
       does not ordinarily distinguish between external and inlined
       documents, one is generally left with "leaf documents" that are
       missing their requisites.

Для получения дополнительной информации выполните man wget и найдите параметр --page-requisites (используйте «/» для поиска во время чтения страницы руководства).

0
ответ дан 08.05.2020, 00:13

Теги

Похожие вопросы