Задать вопрос
@onepunchman404

Как выдернуть весь текст из всех div с одинаковым классом?

Есть парсер, который берет информацию с магазина одежды. Так вот мне нужно взять размеры, все размеры разбросаны по нескольким дивам с одинаковым классов, как мне все их спарсить? Использую библиотеки BeautifulSoup и requests. Я понимаю, что можно сделать что-то типо этого:
item.find_all[0]('a', class_='products-list-item__size-item link') + item.find_all[1]('a', class_='products-list-item__size-item link') ,
но нужен более универсальный вариант, который сам определял бы количество этих размеров и брал их всех

5eb08090dbfa1682307518.png
def get_content(html):
    soup = BeautifulSoup(html, 'html.parser')
    items = soup.find_all('div', class_='products-list-item')

    link = []
    for item in items:
        link.append({
            'Link': HOST + item.find('a', class_='link').get('href'),
            'Size': item.find_all('a', class_='products-list-item__size-item link')
        })
    print(link)
    return link


Сейчас выдает вот эту кашу 'Size': [<a class="products-list-item__size-item link" data-link="/p/ma178ewyyl56/clothes-marksspencer-komplekt/?sku=ma178ewyyl56b100">44</a>, <a class="products-list-item__size-item link" data-link="/p/ma178ewyyl56/clothes-marksspencer-komplekt/?sku=ma178ewyyl56b120">46</a> ......
  • Вопрос задан
  • 602 просмотра
Подписаться 1 Простой 7 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Python-разработчик + ИИ
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Amigun
@Amigun
Джун : |
Через requests получаем нужную страничку:
response = requests.get('тут_ваша_ссылка')
Надеюсь, вы знаете как это делается.
Дальше в бой идет bs4.
soup = BeautifulSoup(response.content, 'lxml')
Теперь создадим цикл for для перебора ВСЕХ (вы же этого хотели, да?) тегов, и будем выдергивать из них текст, если у него имеется нужный нам класс.
for i in soup.recursiveChildGenerator():
		if i.name:
			if i.name == 'a':  # У вас на скрине показан тег a
				try:
					if i.attrs['class']:
						if i.attrs['class'] == 'нужный_вам_тег':
						# Если выше не работает, то попробуйте следующий вариант
						# if i.attrs['class'] == ['нужный_вам_тег']:
							return i.text
						else:
							pass
				except KeyError:
					pass


По идее, это должно работать, но я не тестировал это на вашем сайте.
Пробуйте, делайте.
Если что подробнее можете почитать тут
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽