我正在向返回JSON文件的网址发送请求
response = requests.get(url)
response = json.loads(response)
然后,我试图浏览一些数据,
for documents in response["docs"]:
# do something
现在,我得到的错误是
TypeError: the JSON object must be str, not 'Response'
为了避免这种情况,我试过了,
response = requests.get(url).json()
但是,我无法遍历回复,因为我收到了错误:
KeyError: 'docs'
我是Python新手,并不完全了解获取JSON数据并解析它的最佳方法。建议?
以下是收到的数据样本
{'状态':'好的','回复':{' meta':{' time' :9,'点击':11,'偏移':0},' docs':[{' type_of_material':'新闻',' pub_date':' 2017-01-01T09:12:04 + 0000',' document_type':' article' ,'以及#39; 5868c7e995d0e03926078885',#39; lead_paragraph':'该国领导人自豪地谈到其核武器和弹道导弹计划的进展。 #39;,.....
答案 0 :(得分:4)
您正尝试将响应对象提供给json.loads()
。您没有在那里获得字符串,而是必须访问.contents
或.text
属性:
response = requests.get(url)
# Python 3
response = json.loads(response.text)
# Python 2
response = json.loads(response.content)
但是,这比你需要做的更多; requests
支持直接处理JSON,无需导入json
模块:
response = requests.get(url).json()
请参阅requests
快速入门文档的JSON Response Content section。
加载后,您可以获取doc
上键入的嵌套词典中的response
键:
for documents in response['response']['docs']:
答案 1 :(得分:0)
requests.get
返回一个响应对象,其中包含状态信息,标题等。您需要从此对象访问原始文档文本以解析json或只使用提供的json方法:
response = requests.get(url).json()
(减去错误检查)