我正在尝试使用 python requests 包从 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 的解决方案吗?
您将标头信息作为参数传递。您需要通过标头传递它。
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())
请求中的 params 用于将参数信息传递给 API,以便 API 处理您的请求。而标头用于验证或解释您的请求。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句