02
Апр
2021

Как получить данные при парсе в python?

как сделать запрос, если в одном классе допустим несколько <a href как выбрать тот который мне нужен? Пытаюсь из div класса "content_product_catalog_list_item_picture" забрать ссылку <a href на станицу товара, но необходимо выбрать определенную, так как после div, <a href всречается 3 раза

import requests
from bs4 import BeautifulSoup
import csv

HOST = 'https://happywear.ru/'
URL = 'https://happywear.ru/boys/boy-povsednevnaya-odegda/boy-shtani'
HEADERS = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36'
}

def get_html(url, params=''):
    r = requests.get(url, headers=HEADERS, params=params)
    return r

def get_content(html):
    soup = BeautifulSoup(html, 'html.parser')
    items = soup.find_all('li', class_='js-catalog-item content_product_catalog_list_item')
    cards = []

    for item in items:
        cards.append(
            {

                'title': item.find('a', class_='content_product_catalog_list_item_info_introtext').get_text(strip=type),
                'title_2': item.find('div', class_='content_product_catalog_list_item_picture').find('a').get_text('href'),
                'title_rub': item.find('div', class_='content_product_catalog_list_item_price__block').get_text(strip=type),
                'card_img': item.find('div', class_='content_product_catalog_list_item_picture').find('img').get('src')
            }
        )
    return cards 

html = get_html(URL)
print(get_content(html.text))

введите сюда описание изображения

Источник: https://ru.stackoverflow.com/questions/1265121/%D0%9A%D0%B0%D0%BA-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5-%D0%BF%D1%80%D0%B8-%D0%BF%D0%B0%D1%80%D1%81%D0%B5-%D0%B2-python

Тебе может это понравится...

Добавить комментарий