Web Scrape NBA 统计数据 nba_api 个端点

Webscrape NBA stats nba_api endpoints

我正在尝试从 NBA 统计数据中抓取数据,特别是 the team's boxscore。我正在寻找此页面的 nba_api 端点,以便我可以抓取数据。

如何找到端点?

我不是一个狂热的体育迷,但看起来是这样的:A free NBA Boxscore API 您可以尝试从站点中隔离 CSS、JS 和 HTML 部分。

它在 div 的来源中。

您可以通过打开 Dev Tools (sfht-ctrl-i) 找到端点并在 Network -> XHR 下查看(您可能需要刷新页面)。观察面板上是否开始弹出请求,然后找到包含您的数据的请求。前往 Headers 查找发出请求所需的信息:

import requests
import pandas as pd


url = 'https://stats.nba.com/stats/leaguegamelog'
headers= {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36',
          'Referer': 'https://www.nba.com/'}
payload = {
    'Counter': '1000',
    'DateFrom': '',
    'DateTo': '',
    'Direction': 'DESC',
    'LeagueID': '00',
    'PlayerOrTeam': 'T',
    'Season': '2021-22',
    'SeasonType': 'Regular Season',
    'Sorter': 'DATE'}

jsonData = requests.get(url, headers=headers, params=payload).json()


rows = jsonData['resultSets'][0]['rowSet']
columns = jsonData['resultSets'][0]['headers']

df = pd.DataFrame(rows, columns=columns)

输出:

print(df)
     SEASON_ID     TEAM_ID TEAM_ABBREVIATION  ...  PTS PLUS_MINUS VIDEO_AVAILABLE
0        22021  1610612759               SAS  ...  110          2               1
1        22021  1610612744               GSW  ...  108         -2               1
2        22021  1610612761               TOR  ...   93          5               1
3        22021  1610612755               PHI  ...   88         -5               1
4        22021  1610612738               BOS  ...  124         20               1
       ...         ...               ...  ...  ...        ...             ...
2133     22021  1610612754               IND  ...  122         -1               1
2134     22021  1610612749               MIL  ...  127         23               1
2135     22021  1610612751               BKN  ...  104        -23               1
2136     22021  1610612744               GSW  ...  121          7               1
2137     22021  1610612747               LAL  ...  114         -7               1

[2138 rows x 29 columns]