Сбор ссылок на товары со страницы из тега "a"

Необходимо со следующей страницы - https://petrovich.ru/catalog/12101/?p=1 собрать ссылки на товары. Вот код каким я пытался собирать:

import requests
from bs4 import BeautifulSoup

response = requests.get('https://petrovich.ru/catalog/12101/?p=1')
soup  = BeautifulSoup(response.text, 'lxml')

goods = soup.find('div', class_='product-list').find_all('div', class_='fade-in-list page-item-list pt-col-xxs-12 page-1-item page-item')
for item in goods:
    href = item.find('div', class_='card-catalog-wide-body').find('a').get('href')
    print(href)

В целом когда я просматривал страницу, я не мог найти того, что видел в браузере в просмотре кода. С чем это может быть связано? Это динамическая загрузка элементов?


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

Автор решения: Сергей Ш

А если проанализировать вкладку сеть в инструментах веб-разработчика вашего браузера можно написать такой код:

import json
import requests

cookies = {
    'SIK': 'cwAAABTIkCQ9TVESklwJAA',
    'SIV': '1',
    'C_J-9nw43e5j67_hOMYMLQHTT6AtU': 'AAAAAAAACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8D8AAKBnLcnpQc-DqEX6VVI7F-3w-5RK3-E',
}

params = {
    'limit': '40',
    'offset': '20',
    'path': '/catalog/12101/',
    'city_code': 'spb',
    'client_id': 'pet_site',
}

response = requests.get('https://api.petrovich.ru/catalog/v2.3/sections/12101', params=params, cookies=cookies)
for x in json.loads(response.text)['data']['products']:
    print(x['title'])
    print(x['price']['gold'])
    print(f"https://petrovich.ru/catalog/{x['section']['code']}/{x['code']}")

Угол наружный Docke 3000 мм халва
730
https://petrovich.ru/catalog/9576125/638826
Скоба С1 120х100 мм для пазогребневой плиты
14
https://petrovich.ru/catalog/1571/625800
...
Бетонный фундаментный блок ФБС 5-4-2
890
https://petrovich.ru/catalog/813/132927
Кирпич печной Боровичи рядовой полнотелый 250х120х65 мм М200 1NF
29
https://petrovich.ru/catalog/1557/673012
→ Ссылка