AttributeError: объект 'NoneType' не имеет атрибута 'tbody' - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь создать лист Excel со статистикой игроков, но когда я пытаюсь почистить конкретную таблицу, я получаю

AttributeError: объект 'NoneType' не имеет атрибута 'tbody' ,

В этом случае мне нужна таблица расширенной статистики перечисленных игроков на листе Excel. Если расширенной статистики не существует, оставьте строку рядом с именем пустой.

import requests
import pandas as pd
from bs4 import BeautifulSoup
playernames=['Dominique Jones', 'Joe Young', 'Darius Adams', 'Lester Hudson', 'Marcus Denmon', 'Courtney Fortson']

for name in playernames:
  fname=name.split(" ")[0]
  lname=name.split(" ")[1]
  url="https://basketball.realgm.com/search?q={}+{}".format(fname,lname)
  response = requests.get(url)

  soup = BeautifulSoup(response.content, 'html.parser')
  table = soup.find('table', attrs={'class':'tablesaw', 'data-table-saw-mode-exclude':'columntoggle'}).tbody
  print(table)  

  columns = ['Season', 'Team', 'League', 'GP', 'GS', 'TS%', 'eFG%', 'ORB%', 'DRB%', 'TRB%', 'AST%', 'TOV%', 'STL%', 'BLK%', 'USG%', 'Total S%', 'PPR', 'PPS', 'ORtg', 'DRtg', 'PER']
df = pd.DataFrame(columns=columns)


  trs = table.find_all('tr')
  for tr in trs:
    tds = tr.find_all('td')
    row = [td.text.replace('\n', '') for td in tds]
    df = df.append(pd.Series(row, index=columns), ignore_index=True)

df.to_csv('international players.csv', index=False) 

Ответы [ 2 ]

2 голосов
/ 22 января 2020

Я думаю, что вы указали неверный атрибут name.this должен data-tablesaw-mode-exclude Не data-table-saw-mode-exclude

Изменить это

table = soup.find('table', attrs={'class':'tablesaw', 'data-table-saw-mode-exclude':'columntoggle'}).tbody

На Это

table = soup.find('table', attrs={'class': 'tablesaw', 'data-tablesaw-mode-exclude': 'columntoggle'}).find_next('tbody')
0 голосов
/ 22 января 2020

В строке, где вы делаете soup.find(...., вы ищете атрибут data-table-saw-mode-exclude, но он должен быть data-tablesaw-mode-exclude.

...