【发布时间】:2019-05-29 00:52:27
【问题描述】:
试图从游戏中抓取每个玩家的统计数据,但在尝试 .get() 方法时遇到了麻烦。
这是 API: https://statsapi.web.nhl.com/api/v1/game/2017020002/feed/live
要获取球员统计数据,我首先需要他们的 ID。第一个 for 循环通过到达 ('skaters') 并获取他们的 ID 并将其放入 在列表 player_id 中。
接下来的两个 for 循环是获取主/客场和 player_id 中每个 ID 的球员统计数据。玩家 ID 的形式为 number => 8474756 但是获取 player_stats 的 Key 被命名为“ID”THE PLAYERS NUMBER“”,所以每个键都有一个唯一的名称,这就是为什么存在 for 循环的原因。但我不知道如何使它工作。 感谢您的帮助!
import numpy as np
import pandas as pd
import requests
import json
from sklearn import preprocessing
from sklearn.preprocessing import OneHotEncoder
results = []
player_id = []
for game_id in range(2018020001, 2018020002, 1):
url = 'https://statsapi.web.nhl.com/api/v1/game/{}/feed/live'.format(game_id)
r = requests.get(url)
game_data = r.json()
for homeaway in ['home','away']:
player_dict = game_data.get('liveData').get('boxscore').get('teams').get(homeaway).get('skaters')
player_id.append(player_dict)
for homeaway in ['home', 'away']:
for playerID in player_id:
play_dict = game_data.get('liveData').get('boxscore').get('teams')
.get('homeaway').get('players').get('ID'+player_id).get('person')
这是我必须抓取游戏数据的代码,我希望得到与此相同类型的输出。
import numpy as np
import pandas as pd
import requests
import json
from sklearn import preprocessing
from sklearn.preprocessing import OneHotEncoder
results = []
for game_id in range(2018020598, 2018020650, 1):
url = 'https://statsapi.web.nhl.com/api/v1/game/{}/boxscore'.format(game_id)
r = requests.get(url)
game_data = r.json()
for homeaway in ['home','away']:
game_dict = game_data.get('teams').get(homeaway).get('teamStats').get('teamSkaterStats')
game_dict['team'] = game_data.get('teams').get(homeaway).get('team').get('name')
game_dict['homeaway'] = homeaway
game_dict['game_id'] = game_id
results.append(game_dict)
df = pd.DataFrame(results)
这是我希望数据集看起来如何的示例表
PlayerID Team Won/lost opponent game_id metric1 metric2 metric_n
1 LA 1 CAP 0001 10 10 10
【问题讨论】:
-
你能分享想要的输出吗?您希望脚本执行的结果如何?
-
我可以贴出我刮游戏数据时写的代码。我想有相同类型的输出。我还将发布一个示例表,说明我希望它的外观。在编辑部分发布了更多信息
标签: python python-3.x loops web-scraping