【debug】json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
摘要
环境:
- 编程语言:Python 3.7
- 操作系统:Win 10
- json数据对象:https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2019-11-03&leftTicketDTO.from_station=GZQ&leftTicketDTO.to_station=SZQ&purpose_codes=ADULT
背景:
我用python写一个获取12306车票信息json数据的脚本时,遇到如下报错:
Traceback (most recent call last):File "C:/Users/JohelLiang/Desktop/python/specialTicket.py", line 68, in <module>json = respone.json()File "E:\Python37\lib\site-packages\requests\models.py", line 897, in jsonreturn complexjson.loads(self.text, **kwargs)File "E:\Python37\lib\json\__init__.py", line 348, in loadsreturn _default_decoder.decode(s)File "E:\Python37\lib\json\decoder.py", line 337, in decodeobj, end = self.raw_decode(s, idx=_w(s, 0).end())File "E:\Python37\lib\json\decoder.py", line 355, in raw_decoderaise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
将报错信息 json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 放到百度上查询,发现大多都说是json数据格式的问题,然而我对json数据进行检查,或者按照百度说的方法,将加载json数据的方法改为兼容非标准格式模式,即 json.loads(json_str, strict=False) ,依然行不通,车票信息的json数据如下:
问题发现:
之后我无意中把自己的网络换了一个环境,意外的发现数据竟然获取成功,不再报错,频繁获取也不会报错,原先的环境无论怎么刷新都是会报错的。
于是我对DNS进行排查(之前试过用几十个代理对json数据进行获取,发现也是同一个报错,所以确定不是ip限制的问题),发现原环境解析 kyfw.12306.cn 的实际ip为 59.34.229.253 ,新环境解析 kyfw.12306.cn 的实际ip为 113.96.140.252 ,如下图:
原环境:
新环境:
kyfw.12306.cn 可解析出的实际ip地址共有 4 个,分别是 59.34.229.253、113.96.140.253、113.96.140.252、59.34.229.254 ,对其进行排查,发现只有访问的实际ip是 113.96.140.252 时,是可以成功获取json数据的。
解决问题:
于是乎,我想到在hosts中加入12306的固定域名解析,发现问题得以解决,无论如何频繁获取json数据,都不会报错,解决步骤如下:
1、win+R 输入 cmd 打开命令行工具
2、输入 nslookup 命令并访问域名对象 kyfw.12306.cn ,查询域名对应的所有实际ip
3、找到 hosts文件 ,在windows中hosts文件路径:C:\Windows\System32\drivers\etc
4、在hosts文件最后新增一行内容(对解析出的4个ip进行替换,选取可成功获取json数据的ip):113.96.140.252 kyfw.12306.cn
5、成功获取json数据
【debug】json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)相关推荐
- json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 问题解决
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 问题解决 参考文章: (1)json.decoder.J ...
- json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
可以参考一波:https://stackoverflow.com/questions/16573332/jsondecodeerror-expecting-value-line-1-column-1- ...
- json.decoder.JSONDecodeError: Expecting ‘,‘ delimiter: line xx column xx (char xxx)
将python json字符串转为json的时候出现了:json.decoder.JSONDecodeError: Expecting ',' delimiter: line 12 column 55 ...
- json.decoder.JSONDecodeError: Expecting value: line 28 column 5 (char 731)
傻屌问题,看看是不是json.load读的文件是不是多了哪个符号. 比如这里最后面多了个逗号就报错............
- Python 中JSONDecodeError: Expecting value: line 1 column 1 (char 0)错误
文章目录 尝试解析空字符串会导致错误 错误的常见原因 尝试解析无效的 JSON 值 忘记用引号括起属性或字符串值 对属性或值使用单引号而不是双引号 确保你没有尾随逗号 发出 HTTP 请求时得到空响应 ...
- json.decoder.JSONDecodeError: Invalid \escape: line 1 column 44 (char 43)
import jsondict_str = '{ "content": ""\u003Cblockquote class=\"pgc-blockquo ...
- (已解决)json.decoder.JSONDecodeError: Extra data: line 1 column 47 (char 46)
问题描述 *json.load(file)*出现上述错误. 原因是file中包含不止一条记录.json.load函数只能解析一条记录. 解决方案 将多条记录强行封装为一条,便可读取. Referenc ...
- raise JSONDecodeError(“Extra data“, s, end) json.decoder.JSONDecodeError: Extra data: line 1 column
raise JSONDecodeError("Extra data", s, end) json.decoder.JSONDecodeError: Extra data: line ...
- 解决json解析报错:Expecting value: line 1 column 1 (char 0)
一般来说,出现这种Expecting value: line 1 column 1 (char 0)报错,一般原因都是返回的数据的格式不是json格式的. 今天在用flask写一个接口,测试接口的时候 ...
最新文章
- 特征工程+特征组合+特征交叉+特征变换+生成特征
- Invalid config event received: {version=0, server
- kafka->Flink->ElasticSearch(Java形式)
- PCI总线原理(二)
- oracle date 隐式转换,PL/SQL中的数据类型隐式转换规则
- 国内三巨头为什么那么成功
- Unity3D基础24:LineRenderer特效
- AAAI'22 | 多模态摘要任务中的知识蒸馏和分层语义关联
- 30、vue 过滤器(filters)
- 神经网络 神经元_神经去耦
- 全文索引的使用(二)--使用同义词库 (转)
- 小说站源码php采集,关于PHP批量采集----采集小说站有感
- 3DSMAX和ZBRUSH打造神秘性感美女
- java前后端分离怎么测试,前后端分离如何提高开发测试效率
- EPLAN软件安装教程
- 今天是本学期的第几周的第几天? (15 分) C语言
- linux的tmp分区,在Linux系统中的单独分区上挂载/tmp的方法
- 让机器耳濡目染:MIT提出跨模态机器学习模型
- NLPCC20@基于图注意网络的句子成分感知细粒度情感分析模型SCAN
- 高速信号线PCB走线中的阻抗匹配