请求排查Python的json.decoder.JSONDecodeError错误及数据提取问题
问题排查与修复方案
错误原因分析
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 这个错误说明请求返回的内容不是有效的JSON格式,大概率是请求未成功获取到目标JSON文件,返回了空内容或者错误页面(比如403/404状态对应的HTML页面)。
修复步骤与优化代码
1. 先校验请求状态
处理响应前,先确认请求是否成功(HTTP状态码200代表成功),失败则直接抛出异常提示问题:
2. 使用requests内置JSON解析方法
requests库提供了response.json()方法,可直接将响应内容解析为JSON对象,比手动调用json.loads(response.text)更稳定,还能自动处理编码、内容格式等问题。
优化后的代码
import requests url = "https://s3-ap-southeast-1.amazonaws.com/psi-file-depot/prod/annual-open-data-plans-bd-list.json" response = requests.get(url) # 检查请求是否成功,失败则抛出异常 response.raise_for_status() # 直接用内置方法解析JSON aObject = response.json() for idx, item in enumerate(aObject['data']): print("{}{}\t{}".format( str(idx).rjust(2, ' '), item['provider_name_en'].rjust(25, ' '), item['provider_url_en'] ))
额外注意事项
- 若优化后仍报错,可能是目标URL已失效,或是你的网络环境无法访问该S3存储地址(比如需要代理)。
- 原代码中导入的
pyquery、lxml、pandas、re、hyperlink库未实际使用,可直接删除以减少冗余。
内容的提问来源于stack exchange,提问作者Ponypoly
相关产品推荐
相关产品推荐

