如何使用python从NBA网站上获取统计数据
我试图从NBA网站上获取高级统计数据,更具体地说是从这个链接。然而,我似乎得到了错误“NoneType”对象没有属性“tbody”。如果有人帮助我,我将不胜感激。谢谢 我的代码 联机查看输出:如何使用python从NBA网站上获取统计数据,python,pandas,web-scraping,beautifulsoup,Python,Pandas,Web Scraping,Beautifulsoup,我试图从NBA网站上获取高级统计数据,更具体地说是从这个链接。然而,我似乎得到了错误“NoneType”对象没有属性“tbody”。如果有人帮助我,我将不胜感激。谢谢 我的代码 联机查看输出: API通常很酷 输出: 您可以直接在tbody上查找,但如果您确实得到了表格,请先签入soup.text,这是不保证的。在这里,查找任何API都很容易,我强烈建议您阅读以下文章:。您提供的解决方案是αԋɱҽԃαМєιcαη的副本。您所做的只是将df.改为_csv('output.csv',index=Fa
API
通常很酷
输出:
您可以直接在tbody上查找,但如果您确实得到了表格,请先签入soup.text,这是不保证的。在这里,查找任何
API
都很容易,我强烈建议您阅读以下文章:。您提供的解决方案是αԋɱҽԃαМєιcαη的副本。您所做的只是将df.改为_csv('output.csv',index=False),改为df.改为_csv('NBA stats.csv',index=False)请不要通过破坏您的帖子为其他人做更多的工作。通过在堆栈溢出上发布,您已经在for SO下授予了分发该内容的不可撤销的权利。根据SO政策,任何故意破坏行为都将恢复原状。如果您想了解有关删除帖子的更多信息,请访问
import requests
from bs4 import BeautifulSoup
import pandas as pd
URL = 'https://stats.nba.com/leaders/?StatCategory=FG3M&PerMode=Totals'
response = requests.get(URL)
soup = BeautifulSoup(response.content, 'html.parser')
columns = ['#', 'PLAYER', 'GP', 'MIN', 'PTS', 'FGM', 'FGA', 'FG%', '3PM', '3PA',
'3P%', 'FTM', 'FTA', 'FT%', 'OREB', 'DREB', 'REB', 'AST', 'STL', 'BLK',
'TOV', 'PF', 'EFF', 'AST/TOV', 'STL/TOV']
df = pd.DataFrame(columns=columns)
table = soup.find('table').tbody
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('Stats NBA.csv', index=False)
import requests
import pandas as pd
r = requests.get(
'https://stats.nba.com/stats/leagueLeaders?LeagueID=00&PerMode=Totals&Scope=S&Season=2019-20&SeasonType=Regular+Season&StatCategory=FG3M').json()
df = pd.DataFrame(r['resultSet']['rowSet'], columns=r['resultSet']['headers'])
df.to_csv('output.csv', index=False)
print('done')
import requests
import pandas as pd
r = requests.get(
'https://stats.nba.com/stats/leagueLeaders?LeagueID=00&PerMode=Totals&Scope=S&Season=2020-21&SeasonType=Regular+Season&StatCategory=FG3M').json()
df = pd.DataFrame(r['resultSet']['rowSet'],
columns=r['resultSet']['headers'])
df.to_csv('NBA stats.csv', index=False)
print(df)