10

我一直在编写一个从在线 API 中提取信息的应用程序,我需要一些帮助。

我正在使用请求,我当前的代码如下

myData = requests.get('theapiwebsitehere.com/thispartisworking')
myRealData = myData.json()
x = myRealData['data']['playerStatSummaries']['playerStatSummarySet']['maxRating']
print x

然后我得到这个错误

myRealData = myData.json()                                                                                                                      
TypeError: 'NoneType' object is not callable

我希望能够获得变量 maxRating,并将其打印出来,但我似乎无法做到这一点。

谢谢你的帮助。

4

2 回答 2

23

两件事,首先,确保您使用的是最新版本的requests(它的 1.1.0);在以前的版本json中不是方法而是属性。

>>> r = requests.get('https://api.github.com/users/burhankhalid')
>>> r.json['name']
u'Burhan Khalid'
>>> requests.__version__
'0.12.1'

在最新版本中:

>>> import requests
>>> requests.__version__
'1.1.0'
>>> r = requests.get('https://api.github.com/users/burhankhalid')
>>> r.json()['name']
u'Burhan Khalid'
>>> r.json
<bound method Response.json of <Response [200]>>

但是,您得到的错误是因为您的 URL 没有返回有效的 json,并且您正在尝试调用None属性返回的内容:

>>> r = requests.get('http://www.google.com/')
>>> r.json # Note, this returns None
>>> r.json()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not callable

综上所述:

  1. 升级您的requests( pip install -U requests)版本
  2. 确保您的 URL 返回有效的 JSON
于 2013-01-27T02:10:36.293 回答
1

首先是 myData 实际上返回任何东西吗?

如果是,那么您可以尝试以下操作,而不是使用 .json() 函数

导入 Json 包并在文本上使用 Json 加载功能。

import json
newdata = json.loads(myData.text())
于 2013-01-27T02:03:18.753 回答