@link_vrb

Откуда берется html код на сайте при парсинге python3?

Когда я захожу на сайт и с помощью клавиши F12 захожу в раздел инспектор, показывается исходный код html, если зайти в раздел откладчик, то не получится натйти html страницы, и если зайти в раздел сеть, то среди всех пакетов не будет этого html файла. То же самое при парсинге, когда я делаю GET запрос к этому сайту, я получаю не тот html файл. Этот сайт находится по локальному адресу(может есть какие то отличия в работе). Как такое может быть и как получать html код основной страницы при парсинге на python3?
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
drygdryg
@drygdryg
Python-разработчик
Скорее всего, вы столкнулись с динамическим сайтом.
Отдельные части HTML-страницы могут формироваться на стороне клиента (браузера) с использованием скриптов на языке JavaScript. Такие страницы и сайты называются динамическими. На динамическом сайте после загрузки страницы браузером содержимое в ней может изменяться посредством AJAX-запросов и изменением дерева HTML средствами JavaScript (см. DOM) — то есть на таких сайтах содержимое частично или полностью генерируется на стороне клиента.
Чтобы скрапить динамические страницы (что вы, вероятно, ошибочно называете парсингом) с использованием Python, вам потребуется полноценный браузер с JavaScript-движком, управляемый из вашей программы. В Python для автоматизации использования браузеров можно применить один из этих инструментов: Selenium, Pypeteer или Playwright.
Очень часто можно применить другой подход, не прибегая к использованию браузера с JavaScript-движком. Заключается он в том, чтобы, используя вкладку "Network" в DevTools (инструменты разработчика, открываются по нажатию F12), найти нужные AJAX-запросы, которые генерируются странцей, и воспроизвести их в вашем Python-коде, и таким образом получить необходимые данные с сайта, вообще не прибегая к разбору HTML. Нередко в качестве формата сериализации AJAX-запросов используется JSON, с ним не составит труда работать из Python.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
reqAnsw = req.post(URL_TEMPLATE, data=data, headers=header, allow_redirects=False)
allow_redirects=False
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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