Код получаемый с помощью requests.get() отличается от кода страницы

Я пытаюсь получить код этой страницы так:

import requests

if __name__ == '__main__':
    response = requests.get('https://www.rusplitka.ru/catalog/plitochnyy-kley-zatirka/')
    print(response.text)

В основном код получается правильный, но у каждого товара есть надпись: имеется он в наличии или нет. В коде, который я получил с помощью питона, такого нет.

В чем может быть проблема? Может эти надписи загружаются не сразу а через некоторое время после загрузки страницы?


Ответы (1 шт):

Автор решения: Garry Galler

Может эти надписи загружаются не сразу а через некоторое время после загрузки страницы?

Да. Это называется динамическая загрузка контента. Так работают практически все сайты, кроме тех, что написаны в 90-x годах прошлого века и там и остались. Один из распространенных способов динамический загрузки это AJAX запрос, который javascript код странички делает на сервер для запроса дополнительного контента после загрузки и рендеринга основного шаблона страницы. Никакой http клиент вам не вернет полный итоговый код страницы, кроме браузера. Подсказка: есть специальная библиотека (не только для Python), которая имитирует (точнее подключается к существующему) браузер через специальный драйвер (для каждого браузера он свой и его нужно устанавливать) может полностью прогрузить весь контент. Называется она selenium.

P.S. Для продвинутых программистов selenium может и не понадобиться, если уметь разбираться во внутреннем API сайта.

В чем может быть проблема?

Ваша проблема в незнании современного web-программирования. Нужно начинать учить матчасть.

→ Ссылка