【问题标题】:Python request returning a JSON Decoder ErrorPython 请求返回 JSON 解码器错误
【发布时间】: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)。

标签: python json python-requests jsondecoder


【解决方案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 上的响应。它应该可以帮助您了解问题所在。学习愉快!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2022-06-12
  • 2019-07-14
相关资源
最近更新 更多