【发布时间】:2022-01-05 05:35:15
【问题描述】:
我正在尝试从 nba.com 汇总 NBA 球员数据。我在 csv 中有一个玩家 ID 列表。我想加载每个玩家 id 并将其传递到参数列表中。然后使用 requests.get 中的参数列表。当我直接输入玩家 ID 作为参数时,request.get 起作用。并且通过该函数循环的 csv 测试似乎有效。但是,我无法成功地将 playerids 传递到参数列表中。我试过查看类似的 nba python 代码,但看不出哪里出错了。
'''
import pandas as pd
import requests
import csv
best_db=pd.DataFrame()
def table_Scrape():
global best_db
with open("SHORT_ID_plyr.csv", "r") as f_urls:
f_urls_list = csv.reader(f_urls, delimiter=',')
next(f_urls_list)
##step5. open 1st url from .csv
for lines in f_urls_list:
u = lines[0]
print(u) #<loop test
# import requests
player_id = u
url = """
http://stats.nba.com/stats/playergamelogs?DateFrom=&DateTo=&GameSegment=&LastNGames=0&LeagueID=00&Location=&MeasureType=Base&Month=0&OpponentTeamID=0&Outcome=&PORound=0&PaceAdjust=N&PerMode=Totals&Period=0&PlayerID=203932&PlusMinus=N&Rank=N&Season=2021-22&SeasonSegment=&SeasonType=Regular+Season&ShotClockRange=&VsConference=&VsDivision=
"""
#url = """
#https://stats.nba.com/stats/leaguedashplayerstats?College=&Conference=&Country=&DateFrom=&DateTo=&Division=&DraftPick=&DraftYear=&GameScope=&GameSegment=&Height=&LastNGames=0&LeagueID=00&Location=&MeasureType=Base&Month=0&OpponentTeamID=0&Outcome=&PORound=0&PaceAdjust=N&PerMode=Totals&Period=0&PlayerExperience=&PlayerPosition=&PlusMinus=N&Rank=N&Season=2021-22&SeasonSegment=&SeasonType=Regular+Season&ShotClockRange=&StarterBench=&TeamID=0&TwoWay=0&VsConference=&VsDivision=&Weight=
#"""
header_dict = {
'User-Agent': 'Mozilla/5.0',
'x-nba-stats-origin': 'stats',
'x-nba-stats-token': 'true',
'Referer': 'https://stats.nba.com',
'Connection': 'keep-alive',
'Pragma': 'no-cache',
'Cache-Control': 'no-cache',
'Host': 'stats.nba.com'
}
params = {
'LastNGames': '0',
'LeagueID': '00',
'MeasureType': 'Base',
'Month': '0',
'OpponentTeamID': '0',
'PORound': '0',
'PaceAdjust': 'N',
'PerMode': 'Totals',
'Period': '0',
'PlayerID': u,
'PlusMinus': 'N',
'Rank': 'N',
'Season': '2021-22',
'SeasonType': 'Regular+Season'
}
res = requests.get(url, headers=header_dict, params=params)
json_set = res.json()
headers = json_set['resultSets'][0]['headers']
data_set = json_set['resultSets'][0]['rowSet']
df = pd.DataFrame(columns=headers)
df.head #test the dataframe NOTE: does not appear to be working either
table_Scrape() #call the function
【问题讨论】:
-
提供
SHORT_ID_plyr.csv文件的样本 -
PLAYER_ID 1629760 1629752 1629750 1629744 1629741 1629740 1629738 1629735
-
你能把 csv 文件贴在某个地方,让我看看文件是如何被读入的吗?
-
当然,我的错 - 这是怎么回事:drive.google.com/file/d/1DscQ-JM03jRP7i7ZNZP2I6QzyYzS7l0N/…
-
好的,刚刚向您发送了访问请求
标签: python pandas csv web-scraping parameter-passing