如何从stats.nba.com API获取JSON响应?
问题描述:
我只是试图简单地使用Python获取请求来访问来自stats.nba.com的JSON数据。这看起来很简单,因为我可以在浏览器中输入URL并获得我要查找的结果。但是,每当我运行这个程序时,程序就会结束。我想知道是否必须在我的获取请求中包含某些类型的标题信息。如何从stats.nba.com API获取JSON响应?
的代码如下:
import requests
url = 'http://stats.nba.com/stats/commonteamroster?LeagueID=00&Season=2017-18&TeamID=1610612756'
response=requests.get(url)
print response.text
答
我试图访问网址你给,你可以添加标题您的要求来避免这个问题(您需要提供的最少信息是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网站需要您的'用户代理'标题信息。
您可以从浏览器的网络选项卡中获取您的请求标题信息。
以铬为例,当你按F12,并访问你给出的url,你可以找到相关的请求信息,最有用的信息是请求头。
答
您需要使用头文件。尝试从浏览器的网络标签进行复制。下面是我工作:
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)
这是可行的,但严重的刮操作应该使用自己的用户代理,除非有一个很好的借口,歪曲的自动刮刀机器人作为一个人控制的浏览器。所有的良好/道德刮板定义他们自己的用户代理字符串。 – halfer
@halfer同意:)感谢您的评论,这对我很有帮助 – Ballack