Ошибка в коде парсера на Python

Рейтинг: 0Ответов: 1Опубликовано: 22.07.2025
import requests
from bs4 import BeautifulSoup
from time import sleep

list_card_url = []

url = 'https://klust.clients.site/catalog/sellers/5086264?utm_campaign=vendor_org_767133_17119324_15484252650386489343&utm_referer=geoadv_direct&utm_ya_campaign=30012865984&yabizcmpgn=17119324&utm_source=geoadv_direct&utm_candidate=59133359806&utm_content=15649261735&yclid=15484252650386489343'

headers = {'User-Agent': '<здесь мой юзер-агент>'}

for count in range(1, 240, 16):

    sleep(3)
    url = 'https://klust.clients.site/catalog/sellers/5086264?utm_campaign=vendor_org_767133_17119324_7211523145635463167&utm_referer=geoadv_direct&utm_ya_campaign=30012865984&yabizcmpgn=17119324&utm_source=geoadv_direct&utm_candidate=59133359806&utm_content=15649261735&yclid=7211523145635463167&limit=16&offset={count}'


response_html = requests.get(url, headers=headers)

soup_html = BeautifulSoup(response_html.text, 'lxml')

cards = soup_html.find_all('div', class_='card_container__6nTkC')

for card in cards:

    card_url = 'https://klust.clients.site' + card.find('a').get('href')
    list_card_url.append(card_url)

for card_url in list_card_url:

    response_card = requests.get(card_url, headers=headers)

    soup_card = BeautifulSoup(response_card.text, 'lxml')

    expanded_card = soup_card.find('div', class_='offerItemMarketplace_item__AiSUE')

    name = expanded_card.find('div', class_='productWithPrice_title__e429Q').text
    counted_price = expanded_card.find('div', class_='productWithPrice_price__yfkj2').text
    price_without_discount = expanded_card.find('div', class_='productWithPrice_old-price__q38O7').text
    img_links = expanded_card.find_all('img', class_='image_image-with-skeleton-img__A_a5F').get('src')
    specifications = expanded_card.find_all('div', class_='characteristics_name__JzYCT').text
    result_specifications = expanded_card.find_all('div', class_='characteristics_value__0IhVc').find('div').text

    print(name + '\n' + counted_price + '\n' + price_without_discount + '\n' + img_links + '\n' + specifications + '\n' + result_specifications + '\n\n')

Как я только не пытался подправить свой же код, не могу понять как исправить данную ошибку:

Traceback (most recent call last):
  File "D:\Python\test\Pars\ParserMarket.py", line 39, in <module>
    img_links = expanded_card.find_all('img', class_='image_image-with-skeleton-img__A_a5F').get('src')
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\home\AppData\Local\Programs\Python\Python312\Lib\site-packages\bs4\element.py", line 2885, in __getattr__
    raise AttributeError(
AttributeError: ResultSet object has no attribute "get". You're probably treating a list of elements like a single element. Did you call find_all() when you meant to call find()?

Ответы

▲ 0
img_elements = expanded_card.find_all('img', class_='image_image-with-skeleton-img__A_a5F')
img_links = [img.get('src') for img in img_elements]

Надо пройтись потому, что find_all собрал и достать нужные данные.