Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 请求问题-无法解码任何JSON对象_Python_Json_Python Requests - Fatal编程技术网

Python 请求问题-无法解码任何JSON对象

Python 请求问题-无法解码任何JSON对象,python,json,python-requests,Python,Json,Python Requests,我是python新手,我正在尝试将一些MATLAB代码转换成python。 我有一个来自NBA网站的json格式的url,我想解析并作为数据帧返回。到目前为止,我有以下代码: import requests url = 'http://stats.nba.com/stats/shotchartdetail?PlayerID=2544&TeamID=0&VsConference=&Location=&SeasonType=Regular+Season&Roo

我是python新手,我正在尝试将一些MATLAB代码转换成python。 我有一个来自NBA网站的json格式的url,我想解析并作为数据帧返回。到目前为止,我有以下代码:

import requests
url = 'http://stats.nba.com/stats/shotchartdetail?PlayerID=2544&TeamID=0&VsConference=&Location=&SeasonType=Regular+Season&RookieYear=&Season=2015-16&DateFrom=&ClutchTime=&GameID=&OpponentTeamID=0&DateTo=&GameSegment=&AheadBehind=&LastNGames=0&VsDivision=&LeagueID=&Position=&Outcome=&ContextMeasure=FGM&SeasonSegment=&Period=0&Month=0'
r = requests.get(url)
data = r.json()
我可以看到json通过使用url加载到我的浏览器上,这在MATLAB中也可以工作,但我在python中得到以下错误消息: 无法解码任何JSON对象


知道问题是什么吗?

您可以尝试获取
r
的文本元素并转换为json,如下所示:

import requests
import json

url = 'http://stats.nba.com/stats/shotchartdetail?PlayerID=2544&TeamID=0&VsConference=&Location=&SeasonType=Regular+Season&RookieYear=&Season=2015-16&DateFrom=&ClutchTime=&GameID=&OpponentTeamID=0&DateTo=&GameSegment=&AheadBehind=&LastNGames=0&VsDivision=&LeagueID=&Position=&Outcome=&ContextMeasure=FGM&SeasonSegment=&Period=0&Month=0'
r = requests.get(url)
data = json.loads(r.text)

虽然通过复制和粘贴代码对我有效,但这可能是一个解决办法。

我在这里找到了答案:

添加用户代理可以:

u_a = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36"
response = requests.get(url, headers={"USER-AGENT":u_a})

这里有一个提示:尝试打印r.status\u code,r.ok,r.text,查看nba网站实际返回的数据。仅供参考,对我来说,nba返回了两次
400
(错误请求),然后几分钟后返回
200
(确定)和一些有效的json。也许NBA有点小毛病。谢谢你的建议。我得到以下结果:在MATLAB中,我每次都可以读取该文件。它在python中唯一有效的方法是在浏览器中键入url,然后调用python代码。奇怪…我在这里找到了答案:似乎解决了问题。我尝试了你的建议,不幸的是,我得到了同样的结果。r=requests.get(url)似乎没有返回有效文本。@geogec。你的代码和我的代码在这里都很好用。试着打印
r.text
,看看你得到了什么。如果您运行的是Windows,那么您的Python可能正在被防火墙拦截,因此请求不会得到任何回复。谢谢。r、 文本为空。我正在使用windows。我将研究python防火墙。有什么建议可以解决这个问题吗?我关闭了windows防火墙和AVG软件,但结果仍然一样。我真诚的建议是使用更为开发人员友好的操作系统,如Linux、OSX或BSD。如果不可能,您可能需要检查