Python 请求返回 JSON 解码器错误
Posted
技术标签:
【中文标题】Python 请求返回 JSON 解码器错误【英文标题】:Python request returning a JSON Decoder Error 【发布时间】:2019-09-25 19:02:27 【问题描述】:我正在尝试从网站中提取数据。我正在使用 Python 请求:
users = requests.get('website name here', headers=headers).json()
我收到此错误:
从 None 提高 JSONDecodeError("Expecting value", s, err.value) json.decoder.JSONDecodeError:预期值:第 1 行第 1 列(字符 0)
我知道我要提取的数据是 JSON,这是其他人收到此错误消息时遇到的问题之一。我的猜测是,因为访问该站点需要用户名和密码,所以它给了我这个错误。会是这样吗?如果是这样,我该如何解决?我不想在我的 Python 程序中包含我的登录信息。
编辑: 我现在知道授权不是问题,因为我创建了一个授权令牌,但我仍然遇到同样的问题。
【问题讨论】:
我知道我要提取的数据是 JSON 我很困惑你的意思。你的意思是它实际上是 JSON,还是你的意思是它应该是 JSON,假设一切都按预期工作? 检查.text
的值而不是.json()
。几乎可以肯定它不是有效的 json。如果该站点需要登录,那么您必须以某种方式将用户名和密码传递给您的程序(除非该站点提供了另一种身份验证方法,例如 oauth)。
【参考方案1】:
request.get()
返回响应 (Doc) 对象,response.content
将有实际响应。
我建议尝试:
import json
import requests
headers = ...
response = requests.get('website name here', headers=headers)
try:
users = json.loads(response.content)
except Exception as ex:
print("Error getting response")
【讨论】:
那么响应可能不是有效的 json。尝试从浏览器/邮递员获取 URL 并验证 jsonformatter.curiousconcept.com 上的响应。它应该可以帮助您了解问题所在。学习愉快!以上是关于Python 请求返回 JSON 解码器错误的主要内容,如果未能解决你的问题,请参考以下文章
Python JSON to CSV - 编码错误,UnicodeDecodeError:'charmap'编解码器无法解码字节