Как спарсить товары по этой
ссылке?
Когда пробую явно обратиться к необходимому блоку через его класс, то возвращается пустой список ([]).
import requests
from bs4 import BeautifulSoup
def get_products(url):
'''Функция отправляет GET-запрос, возвращая список товаров
'''
r = requests.get(
url,
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0',
'Accept': 'application/json, text/plain, */*',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
'api-version': '3.0',
'client-token': '7ba97b6f4049436dab90c789f946ee2f',
'Connection': 'keep-alive',
'DNT': '1',
'Host': 'sbermarket.ru',
'is-storefront-ssr': 'false',
'Referer': 'https://sbermarket.ru/',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'TE': 'trailers',
}
)
soup = BeautifulSoup(r.text, 'html.parser')
body = soup.find_all("ul", class_="ProductsGrid_styles_grid__zigKP")
return body
if __name__ == "__main__":
url = 'https://sbermarket.ru/categories/moloko-iaitsa-new/moloko'
products = get_products(url)
print(products)
Когда пробую расширить область поиска, убрав класс элемента, как показано ниже
body = soup.find_all("ul")
В этом случае получаю список, который не содержит мой ненумерованный список:
[<li><a class="footer__link" href="/about">О компании</a></li>, <li><a class="footer__link" href="/contacts_2">Контакты</a></li>, <li><a class="footer__link" href="https://job.sbermarket.ru/">Наши вакансии</a></li>, <li><a class="footer__link" href="/terms-sbermarket">Документы</a></li>, <li><a class="footer__link" href="https://job.sbermarket.ru/">Стать партнером</a></li>, <li><a class="footer__link" href="/how-we-work-video">Как мы
работаем</a></li>, <li><button class="footer__link">Зоны доставки</button></li>, <li><a class="footer__link" href="/delivery2">Доставка и оплата</a></li>, <li><a class="footer__link" href="/faq-sbermarket">Помощь</a></li>]
Хотя при использовании Инспектора Инструмента разработчика для Firefox я могу ясно видеть мой блок.