Как выбрать элементы без класса с помощью beautifulsoupPython

Программы на Python
Anonymous
 Как выбрать элементы без класса с помощью beautifulsoup

Сообщение Anonymous »

Просматриваю веб-сайт Fbref, чтобы получить информацию о конкретном игроке и использовать ее для дальнейшего анализа.
Я выбрал таблицу, которую хочу очистить. Информация, которая мне нужна, находится в тегах без каких-либо атрибутов класса.
Но проблема в том, что эта таблица имеет много заголовков в тегах , которые имеют имя класса

Код: Выделить всё

import requests
from bs4 import BeautifulSoup
from time import sleep
url = "https://fbref.com/en/comps/9/2021-2022/stats/2021-2022-Premier-League-Stats"

response = requests.get(url).text.replace('', '')

soup = BeautifulSoup(response, "html.parser")
Я выбрал нужную таблицу, которую хочу очистить. Я хочу выбрать теги , у которых нет атрибута класса, потому что именно там находится нужная мне информация.

Код: Выделить всё

players_table = soup.select("table#stats_standard tbody tr", class_ =None)
Затем я просмотрел таблицу player_table, чтобы получить информацию о каждом игроке, такую ​​как имя, страна, позиция и т. д.

Код: Выделить всё

for player in players_table:
player_name = player.find("td", attrs={"data-stat" : "player"}).a.text
print(player_name)
sleep(2)
Но теперь проблема в том, что мой код будет циклически проходить по таблице, и когда он найдет тег , он попытается найти его тег , а затем продолжить поиск текста в теге . Но этот конкретный тег не имеет тегов , и это приводит к тому, что мой код ломается и получает это сообщение об ошибке. Объект NoneType не имеет атрибута "a", когда я пытаюсь его запустить.
Мой код печатает имена игроков до тех пор, пока не найдет этот тег без , тогда он просто терпит неудачу. & ломается.
Я даже пытался разложить или очистить этот тег , но он все равно не работает.

Код: Выделить всё

player.find(".thead").decompose()
Поэтому мой вопрос заключается в том, как я могу выбирать только теги, у которых нет какого-либо класса, чтобы при достижении тега он просто игнорировал его. Я действительно пытался сделать это, используя class_ = None при создании таблицы

Код: Выделить всё

players_table = soup.select("table#stats_standard tbody tr", class_ =None)
Но это ничего не решило. Мне нужна ваша помощь в этом, пожалуйста.

Подробнее здесь: https://stackoverflow.com/questions/733 ... utifulsoup

Вернуться в «Python»