@Polyanskij24

Сложная задача, явно не по мне (новичёк), споткнулся в начале пути AttributeError: 'NoneType' object has no attribute 'text'?

задачу поставил сделать парсер, трудности возникли именно из-за запутанности кода страницы Ссылка удалена модератором.
Много задач передо мной, но для начала ставлю цель просто получить список турниров со страницы в формате:
ATP 500. Барселона, Испания. Одиночный разряд. 1/16 финала
ATP 500. Барселона, Испания. Одиночный разряд. 1/32 финала
ATP 500. Барселона, Испания. Парный разряд. 1/8 финала
WTA 500. Штутгарт, Германия. Одиночный разряд. 1/8 финала
и так далее...

Вот такой у меня код
import aiogram
from aiogram import Bot, Dispatcher, executor, types

bot = Bot(token="6117391894:AAHVUSrYC0AV2C3fyYHwnaSg-YZOcbOrVh8")
dp = Dispatcher(bot)

import requests
from bs4 import BeautifulSoup as b

url = 'Ссылка удалена модератором. '
r = requests.get(url)
soup = b(r.text, 'html.parser')

# находим все блоки с информацией о турнирах
tournament_blocks = soup.find_all('div', {'class': 'category-container'})

# проходимся по каждому блоку
for block in tournament_blocks:

    # находим имя турнира
    tournament_name = block.find('div', {'class': 'category-label'}).text

    # находим категорию турнира
    tournament_category = block.find('div', {'class': 'category-label__subtext'}).text

    # находим тип игры (одиночный или парный разряд)
    tournament_type = block.find('div', {'class': 'category-item__name'}).text

    # находим этап турнира
    tournament_stage = block.find('div', {'class': 'category-item__subtext'}).text

    # выводим информацию об этом турнире
print(f"{tournament_category}. {tournament_name}. {tournament_type}. {tournament_stage}")


Не знаю на сколько сложно для профи, ставлю среднюю сложность.... В общем не парсит список и всё, просто ступор....
Очень сложно было найти теги на странице нужные, с горем пополам справился и тут ошибка снова эта же, но если ранее её удалось устранить, сейчас кажется невозможным.

Traceback (most recent call last):
  File "C:\Users\rekla\OneDrive\Рабочий стол\Maraphon\Salieri_Maraphon_bot\main.py", line 21, in <module>
    tournament_name = block.find('div', {'class': 'category-label'}).text
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'text'

Process finished with exit code 1
  • Вопрос задан
  • 51 просмотр
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix
yellow
Ну, для начала открываете сурс странице в браузере, либо читаете r.text (что лучше). И ищите там свои теги. Там их не будет скорее всего. Почему? Современный веб генерирует страницы динамически и многие данные подгружаются через XHR с последующей обработкой. Плюс, учитывая тип сайта, возможно данные там подгружаются по WSS.

Если через доп. запросы: открываете f12 в браузере и смотрите во вкладке нетворк, ну или любым сниффером траффика, и смотрите откуда приходят нужные данные. Ну или селениум
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы