请求超时,cURL没有

时间:2017-06-01 21:45:43

标签: python curl python-requests

我正试图通过使用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的解决方案?

1 个答案:

答案 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在其结束时处理您的请求。而标题用于验证或解释您的请求。