Парсинг изображений или title с помощью bs4

есть сайт в котором цены в HTML указываются как img файлы

<img src="https://winauto.ua/index.php?dispatch=products.show_price&amp;pr=YmI0Y2JiYzMxNmE1NzE5NjExN2JlZGM4YzNmYzUzYTcToyOntpOjA7ZDo2NjAzO2k6MTthOjI6e2k6MDtzOjEwOiJkaXNjb3VudGVkIjtpOjE7czo1OiJwcmljZSI7fX0%3D" alt="6670 грн." title="Цена: 6670 грн.">

и в нем есть alt и title, где находятся нужные мне данные. Как можно было бы вывести эти данные? Через item.find не работает, вытягивает только None, пробовал через item.get, не вышло.

<span class="ty-price" id="line_discounted_price_99870">
<bdi><img src="https://winauto.ua/index.php?dispatch=products.show_price&amp;pr=YmI0Y2JiYzMxNmE1NzE5NjExN2JlZGM4YzNmYzUzYTcToyOntpOjA7ZDo2NjAzO2k6MTthOjI6e2k6MDtzOjEwOiJkaXNjb3VudGVkIjtpOjE7czo1OiJwcmljZSI7fX0%3D" alt="6670 грн." title="Цена: 6670 грн."></bdi>
</span>

Вот фрагмент кода, нужно цену запихнуть в product_price

def collect_data(pages_count):
         with open(f"parcerWinAuto_{cur_date}.csv", "w") as file:
            writer = csv.writer(file)

            writer.writerow(
                (
                    "Артикул",
                    "Ссылка",
                    "Цена"
                )
            )
    data = []
    cur_date = datetime.now().strftime("%d_%m_%Y")
    for page in range (1, pages_count):
      
                 with open (f'data/page_{page}.html') as file: src = file.read()

                 soup = BeautifulSoup(src,'lxml')

                 items_card = soup.find_all('div', class_='ut2-gl__body')

                 for item in items_card:
                     product_article = item.find('div',class_='ut2-gl__name').text.strip()
                     
                    
                  
                     el = soup.select('span')

                     product_price=el.get('title')

                     
                     product_url = item.get('a',"href")

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

Автор решения: gil9red

Шаги:

  • Использовал request.Session, это на случай, если запросов будет много и они будут последовательные (например, перебор страниц), это позволит сохранить куки
  • Использовал парсер из коробки html.parser
  • Для поиска использовал css-селекторы

Накидал пример:

import requests
from bs4 import BeautifulSoup


session = requests.Session()
session.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0'


url = 'https://winauto.ua/index.php?match=all&subcats=y&pcode_from_q=y&pshort=y&pfull=y&pname=y&pkeywords=y&search_performed=y&q=gazer&dispatch=products.search&items_per_page=128&search_id=37901&page=1'
rs = session.get(url)
root = BeautifulSoup(rs.content, 'html.parser')

for product in root.select('#products_search_pagination_contents .ut2-gl__body'):
    title = product.select_one('.product-title').get_text(strip=True)
    price = product.select_one('.ty-price-update img[title]')
    if not price:
        print(f'[#] Не удалось найти цену для {title!r}!')
        continue

    print(title, price['title'], sep=" | ")

Результат:

Видеорегистратор Gazer F155 c GPS, Wi-Fi, LTE с охранным режимом | Цена: 5999 грн.
Видеорегистратор Gazer F750w | Цена: 9999 грн.
Блок для подключения к CAN-шине Gazer MA011 для Volkswagen, Skoda, Seat | Цена: 970 грн.
Блок для подключения к CAN-шине Gazer MA025 для Hyundai | Цена: 1628 грн.
Кабель питания Gazer MA120 для Hyundai | Цена: 304 грн.
Штатное зеркало Gazer MUW7000 с видеорегистратором, Wi-Fi, автозатемнением, заменяемое | Цена: 8999 грн.
Штатное зеркало Gazer MM507 для BMW, Citroen, Ford, Peugeot, Volvo, заменяемое | Цена: 2230 грн.
Штатное зеркало Gazer MM504 для Hyundai, Kia, заменяемое | Цена: 2230 грн.
...
Штатная магнитола Gazer CM6007-QV для Kia Mohave (QV) 2007-2012 | Цена: 8487 грн.
Штатная магнитола Gazer CM6008-V40 для Toyota Camry (V40) 2007-2011 | Цена: 21990 грн.
Штатная магнитола Gazer CM6006-SC11 для Nissan Tiida(SC11), Qashqai, X-Trail, Patrol 2004-2010 | Цена: 15992 грн.
Штатная магнитола Gazer CM5008-XW50 для Toyota Prius (XW50) 2014-2017 | Цена: 7109 грн.
Штатная магнитола Gazer CM6509-QL для Kia Sportage (QL) 2015-2017 | Цена: 21990 грн.
→ Ссылка