为了账号安全,请及时绑定邮箱和手机立即绑定

AttributeError:“NoneType”对象没有属性“tbody”

AttributeError:“NoneType”对象没有属性“tbody”

catspeake 2022-07-05 19:41:55
我正在尝试创建一个包含球员统计数据的 Excel 表格,但是当我尝试抓取特定表格时,我不断得到AttributeError:“NoneType”对象没有属性“tbody”。在这种情况下,我想要 Excel 表上列出的球员的高级统计表。如果不存在高级统计信息,请将名称旁边的行留空。import requestsimport pandas as pdfrom bs4 import BeautifulSoupplayernames=['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 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

我认为您提供了错误的属性名称。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')



查看完整回答
反对 回复 2022-07-05
?
萧十郎

TA贡献1815条经验 获得超13个赞

在您制作的行中,soup.find(....您正在寻找data-table-saw-mode-exclude属性,但它必须是data-tablesaw-mode-exclude.



查看完整回答
反对 回复 2022-07-05
  • 2 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信