Python学习之路——12306爬票遇到的两个问题

使用PyCharm+QT5在12306爬取余票信息的项目中遇到的问题,

问题1:This application failed to start because not Qt platform plugin could be initialized.   

问题2:json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

问题1:使用PyCharm进入QT Designer绘制了窗体window.ui,后转成window.py文件,经过代码修改调试后run window,报错This application failed to start because not Qt platform plugin could be initialized.   在网上查找了各路大佬的方法,复制plugins文件、修改系统环境变量等无果,最后检查了一下是项目文件的路径存在中文,改掉中文,启动,就成功啦

问题2:请求车票信息时,运行到result = response.json()这一步报错json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0),

url = "https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date={}&leftTicketDTO.from_station={}&leftTicketDTO.to_station={}&purpose_codes=ADULT".format(date, from_station, to_station)
response = requests.get(url, headers=header)
result = response.json()

原因为request.get()是独立的一次访问,没有携带前几个访问请求反馈后的状态,相当于把每次请求看成了独立浏览器去完成的,所以12306拒绝访问。

解决方法为增加cookie直接写入header,或者直接使用cookie。

修改后的代码:

cookie = "_uab_collina=162446435281309305961668; JSESSIONID=28E53DE9D9C2EFA35710524A230FB4B8; BIGipServerotn=619708938.64545.0000; RAIL_EXPIRATION=1624775618686; RAIL_DEVICEID=rK1N26rkjeEQyLccR-mNLg3VxH0a9maG-KWLbrvx_NcoRN24nndiPGbLUq9_WCIgurdTMipo7-0glBTnodSVIfGlIJ1NNNfBlIyq8czcR_YQcnG8YWMfC01Z9Bd_Za9-SfnOgwRPc0Sa_CNWeUcUBk-qc65rPRZQ; BIGipServerpool_passport=65274378.50215.0000; route=6f50b51faa11b987e576cdb301e545c4; _jc_save_toStation=%u4E0A%u6D77%2CSHH; _jc_save_fromDate=2021-06-24; _jc_save_toDate=2021-06-24; _jc_save_wfdc_flag=dc; _jc_save_fromStation=%u5317%u4EAC%2CBJP"
header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3870.400 QQBrowser/10.8.4405.400',
          'Connection':'keep-alive',
          'accept':'*/*',
          'Cookie':cookie}
url = "https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date={}&leftTicketDTO.from_station={}&leftTicketDTO.to_station={}&purpose_codes=ADULT".format(date, from_station, to_station)
response = requests.get(url, headers=header)
result = response.json()

启动,运行成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值