我正试图通过使用python请求包从NBA STATS api玩游戏。我一直在运行超时错误,所以我在cURL中尝试了它。
以下是我想要获得的单一游戏请求的网址:
http://stats.nba.com/stats/playbyplayv2?EndPeriod=10&GameID=0021500492&StartPeriod=1
你可以转到这个链接,查看一下,那一切都可以。
我尝试对该链接执行cURL请求,并且超时了。最后,我逐个插入请求标题作为cURL参数,直到它起作用。
curl -X GET -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" -H "User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:53.0) Gecko/20100101 Firefox/53.0" -H "Accept-Language: en-US,en;q=0.5" -H "Accept-Encoding: gzip, deflate" "http://stats.nba.com/stats/playbyplayv2?EndPeriod=10&GameID=0021500492&StartPeriod=1"
这是我在请求中的查询:
pars = {'Accept-Encoding': 'gzip, deflate'\
, 'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:53.0) Gecko/20100101 Firefox/53.0'\
, 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'\
, 'Accept-Language':'en-US,en;q=0.5'}
response = requests.get('http://stats.nba.com/stats/playbyplayv2?EndPeriod=10&GameID=0021500492&StartPeriod=1'\
, params=pars)
我需要通过请求让它在python中运行,或者想出一种在cURL中执行此操作的方法,以便我可以(a)根据文件/文件名中的文本填写GameID部分。循环和(b)将其保存为正确的目录(不是工作目录)中的json。
有什么想法吗?是否有基于urllib的解决方案?
答案 0 :(得分:2)
您将标题信息作为参数传递。你需要通过标题传递它。
import requests
headers = {'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:53.0)
Gecko/20100101 Firefox/53.0'}
params = {
'EndPeriod': 10,
'GameID': '0021500492',
'StartPeriod': 1
}
r = requests.get("http://stats.nba.com/stats/playbyplayv2", params=params,
headers=headers)
print(r.json())
请求中的参数用于将参数信息传递给API,以便API在其结束时处理您的请求。而标题用于验证或解释您的请求。