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'编解码器无法解码字节

解码 json 无法打开流:HTTP 请求失败!错误

Python使用中错误(持续更新.....)

请求返回字节,我无法解码它们

Sencha Touch 错误您正在尝试解码 ASP.NET 中返回的无效 JSON 字符串 HTML 页面

JSON解码器Swift 4.0