使用Python requests获取ISS位置时遭遇JSONDecodeError错误求助
ISS位置API请求JSON解码错误排查
问题描述
我尝试获取国际空间站(International Space Station, ISS)的当前位置并以JSON格式展示,代码如下:
import requests sample = requests.get(url="http://open-notify.org/Open-Notify-API/ISS-Location-Now/") conv= sample.json() print(conv)
预期返回ISS当前位置的JSON数据,但却持续出现如下错误:
Traceback (most recent call last): File "C:\Users\Guest\PycharmProjects\Api\main.py", line 7, in <module> conv = sample.json() ^^^^^^^^^^^^^ File "C:\Users\Guest\AppData\Local\Programs\Python\Python312\Lib\site-packages\requests\models.py", line 975, in json raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
错误原因及解决方法
核心原因
你使用的URL是API的说明网页地址,而非实际提供数据的接口地址。该网页返回的是HTML内容,并非JSON格式,因此调用json()方法会触发解码失败。
解决步骤
- 替换为正确的API接口地址
ISS当前位置的有效API端点是https://api.open-notify.org/iss-now.json,修改代码后即可正常获取JSON数据:
import requests sample = requests.get(url="https://api.open-notify.org/iss-now.json") conv = sample.json() print(conv)
- 调试小技巧
后续遇到类似问题时,可先打印响应状态码和原始内容,快速定位问题:
import requests sample = requests.get(url="https://api.open-notify.org/iss-now.json") print("状态码:", sample.status_code) print("原始响应内容:", sample.text) if sample.status_code == 200: conv = sample.json() print("解析后的JSON数据:", conv) else: print("请求失败,状态码:", sample.status_code)
内容的提问来源于stack exchange,提问作者Stephen Okyere
相关产品推荐
相关产品推荐

