@Semechka1290

AttributeError: 'NoneType' object has no attribute 'text'?

import requests
from bs4 import BeautifulSoup

headers = {
    "User-Agent" : 
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.41"}

card_list = []

for count in range(1, 8):
    link = "https://scrapingclub.com/exercise/list_basic/?page={count}" 
    responce = requests.get(link, headers=headers)
    soup = BeautifulSoup(responce.text, 'lxml')
    card_product = soup.find_all("div", class_ = "col-lg-4 col-md-6 mb-4")

    for i in card_product:
        card_link = "https://scrapingclub.com" + i.find("a").get("href")
        card_list.append(card_link)

for card_link in card_list:
    responce = requests.get(card_link, headers=headers)
    soup = BeautifulSoup(responce.text, 'lxml')

    card_product = soup.find("div", class_ = "card mt-4 my-4")
    card_title = card_product.find("h3", class_ = "card_title").text
    card_text = card_product.find("h4", class_ = "card_text").text
    card_price = card_product.find("h4").text

    print(card_title, card_text, card_price)


Как я понял суп не находит элемент card title, хотя card price и card text вместе с card title находятся в одном блоке. Если убрать параметр text то вместо текста будет None. Возможно я туплю, помогите пожалуйста. Зарание спасибо.
  • Вопрос задан
  • 162 просмотра
Решения вопроса 1
hottabxp
@hottabxp
Сначала мы жили бедно, а потом нас обокрали..
Исправленный код:
for card_link in card_list:
    responce = requests.get(card_link, headers=headers)
    soup = BeautifulSoup(responce.text, 'lxml')

    card_product = soup.find("div", class_ = "card mt-4 my-4")
    card_title = card_product.find("h3", class_ = "card-title").text
    # card_text = card_product.find("h4", class_ = "card-text").text
    card_price = card_product.find("h4").text

    print(card_title, card_price)

card_title нет, но есть card-title, также нет этого "h4", class_ = "card_text"
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
card_title = card_product.find("h3", class_ = "card_title").text

На странице, URL которой ты привёл, вообще нет тега h3, похоже. h4 есть, в том числе с классом card_title.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы