@Vl656

В BeautifulSoup при парсинге вместо текста выводятся какие-то параметры в {{}}. Как это исправить?

У меня есть задача: спарсить с сайта AVON специальные предложения.
При выполнении вот этого кода:
import requests
from bs4 import BeautifulSoup as BS
url = "https://my.avon.ru/specialnye-predlozhenija/19/vse-spetspredlozheniya"
r = requests.get(url)
html = BS(r.content, "html.parser")
obj = html.find('a', attrs={"class": "SpecialOfferTitle"})
print(obj)

в тексте тега выводится {{::MaxText(specialOffer.Headline, (Lay...
  • Вопрос задан
  • 339 просмотров
Решения вопроса 1
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
Нажимаем F12 и внимательно изучаем запросы(особенно, xhr). После того как внимательно изучили, делаем скриптом запрос по адресу "my.avon.ru/api/specialoffersapi/getcategorypromotions?promoCategoryId=19", получаем готовый json и работаем с ним.
5f905bd8c9526239597148.png
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@kirillinyakin
Скорее всего эти атрибуты выводятся после отработки JS скриптов, а requests с этим справиться не может. Можете попробовать использовать Selenium
Ответ написан
Комментировать
SoreMix
@SoreMix Куратор тега Python
yellow
Контент через JS рендерится.
Исходный код смотрите только через Ctrl+U.
Чтобы найти откуда появляется нужная информация, нажимаете F12 -> Network -> обновляете страницу. Во вкладке XHR смотрите какие запросы отправляются, и какие на них приходят ответы. Находите нужный, повторяете его через requests
В вашем случае URL будет
https://my.avon.ru/api/specialoffersapi/getcategorypromotions?promoCategoryId=19
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы