【发布时间】:2021-06-19 20:41:22
【问题描述】:
我正在尝试在 python 中使用 Requests 从 API 获取数据。
有时它工作正常,有时它会抛出此错误:
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
我不知道这里出了什么问题,谁能帮帮我。
Here's the API
这是我的代码:
import requests
import json
headers = {'User-Agent': 'Mozilla/5.0'}
payload = {'symbol':'NIFTY'}
r = requests.get('https://www.nseindia.com/api/option-chain-indices', params = payload, headers = headers).json()
print(r.keys())
print(r['records'])
【问题讨论】:
-
解析前检查响应码!
-
API 链接已失效。
-
确保保存响应,也许在尝试将其解码为 JSON 之前,然后您可以检查它 - 它不是 JSON,通过检查它您可能会发现它是 HTML,也许它包含的文本给出了非 JSON 响应的一些原因。也许你必须在解码周围使用
try/except JSONDecodeError来捕获异常。 -
@martineau 它没有死。
-
添加异常捕获并记录。代码基本上可以工作,而且由于它很小,看起来很明显它可能失败的原因与代码本身无关,即互联网或远程 Web 服务器的问题。再多的询问也无法澄清、诊断或修复这个问题——你所能做的就是让你的代码变得健壮,例如添加日志记录,至少可以提供你自己的信息,以帮助你理解之后的不同故障。
标签: python json python-requests