如何从stats.nba.com API获取JSON响应?

时间:2017-10-17 02:22:20

标签: python python-requests

我只是想简单地使用Python get请求来访问stats.nba.com中的JSON数据。这似乎很简单,因为我可以在您的浏览器中输入URL并获得我正在寻找的结果。但是,每当我运行它时,程序就会运行到最后。我想知道是否必须在我的获取请求中包含某种类型的标题信息。

代码如下:

import requests

url = 'http://stats.nba.com/stats/commonteamroster?LeagueID=00&Season=2017-18&TeamID=1610612756'
response=requests.get(url)
print response.text

2 个答案:

答案 0 :(得分:3)

我试图访问您提供的 url ,您可以在请求中添加标题以避免此问题(您需要提供的最少信息是User-Agent,我认为您可以使用更多标题信息,你可以):

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'}
response = requests.get(url, headers=headers)

stats.nba.com 网站需要您的“用户代理”标题信息。

您可以从浏览器的“网络”标签中获取请求标题信息。

以Chrome为例,当您按 F12 ,并访问您给出的网址时,您可以找到相关请求信息,最有用的信息是请求标头。

enter image description here

答案 1 :(得分:2)

您需要使用标头。尝试从浏览器的网络选项卡进行复制。这对我有用:

request_headers = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'en-US,en;q=0.8',
    'Connection': 'keep-alive',
    'Host': 'stats.nba.com',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'
}

这是修改后的get

response = requests.get(url, headers = request_headers)