Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Элемент из парсера не даёт текст именно card_text_4 в чем ошибка? остальные норм работают

Юрий Магдалянов Знаток (330), закрыт 1 год назад
 import requests as rq
from bs4 import BeautifulSoup as Bs
Url_1='https://hypermarketmebel.ru/'
url_cod=rq.get(Url_1)
sup=Bs(url_cod.content,'html.parser')
elm=sup.find_all('div', class_='elements')
for m in elm:
naim=m.find('div', class_='element__name').text.strip()
vid_link=m.a['href']
link='https://hypermarketmebel.ru'+vid_link
print(naim,'\n',link)
Url_2=f'https://hypermarketmebel.ru{vid_link}'
url_cod=rq.get(Url_2)
sup=Bs(url_cod.content,'html.parser')
card=sup.find_all('div', class_='card__container')
for l in card:
card_text=l.find('div', class_='price flex items-center').text.strip()
card_text_2=l.find('div', class_='price-installment').text.strip()
card_text_3=l.find('div', class_='price-bonus').text.strip()
card_text_4=l.find('div', class_='card__name').text.strip()
print(card_text,'\n',card_text_2,'\n',card_text_3,'\n',card_text_4)
Лучший ответ
ewe 2e¶ CoЛнЫшКоcBeTиТоЧеНЬяРкО* Высший разум (321649) 1 год назад
Судя по всему это какой-то парсер web-страницы, возьмите текст этой странички откройте в редакторе и убедитесь, что class с именем "card__name" там действительно присутствует.
Ну и еще хорошо бы знать, как именно "не дает" - выводит пустое значение, выводит не то значение, трапается в эксцепшин, еще что-то?.
Юрий МагдаляновЗнаток (330) 1 год назад
пишет мол нет текста у данного объекта 'NoneType' object has no attribute 'text'
а если напишу вместо этого
 card_text=l.find('div', class_='price flex items-center').text.strip() 
card_text_2=l.find('div', class_='price-installment').text.strip()
card_text_3=l.find('div', class_='price-bonus').text.strip()
card_text_4=l.find('div', class_='card__name').text.strip()
print(card_text,'\n',card_text_2,'\n',card_text_3,'\n',card_text_4)
вот это card_text=l.text.strip()
print(card_text)
то весь текст класса выводит
ewe 2e¶ CoЛнЫшКоcBeTиТоЧеНЬяРкО* Высший разум (321649) Юрий Магдалянов, короче смотрим: код начальной страницы (строки в начале)
  
 
Там действительно есть элементы, они видимо находятся, и дальше в цикле парсятся.
Остальные ответы
Sevastyan Razumov Профи (906) 1 год назад
Ошибки могут возникать по разным причинам. В данном случае, если элемент card_text_4 не содержит текст, это может быть вызвано следующими причинами:

Неправильное указание класса или идентификатора элемента. Убедитесь, что класс 'card__name' действительно присутствует в HTML-разметке элемента, который вы пытаетесь найти. Может быть опечатка или изменение структуры страницы.

Элемент card_text_4 может быть пустым или не содержать текстового содержимого в HTML-разметке. В этом случае, когда вы вызываете text.strip(), он не возвращает текст, так как его нет.

Чтобы проверить, какие элементы на самом деле содержатся в card, вы можете добавить отладочную печать, например:

for l in card:
card_text=l.find('div', class_='price flex items-center').text.strip()
card_text_2=l.find('div', class_='price-installment').text.strip()
card_text_3=l.find('div', class_='price-bonus').text.strip()
card_text_4=l.find('div', class_='card__name').text.strip()
print(card_text,'\n',card_text_2,'\n',card_text_3)
print(card_text_4) # Добавленная отладочная печать


Это поможет вам определить, почему card_text_4 не содержит текста. Если элемент не найден или содержит другую разметку, вам нужно будет изменить свой код для правильного извлечения информации или пропустить элемент, если он не является обязательным.
Похожие вопросы