python查询12306余票_Python实现查询12306火车票信息
例子来源于马哥的公众号,看了几遍,有些地方存在些疑问,然后就自己查找些资料,重写的一下,但是对于获取到的信息,并不能有效的解析出来,而且对于中文字符处理,并不是很好,请大神指教下!谢过!
1、接口设置:用户只要输入出发站,到达站及日期就能查到火车信息;python tickets [-hgdtkz] from to date
2、解析参数,使用docopt模块
3、获取数据,打开12306官网余票查询的界面,浏览器按F2到开发人员工具界面,点击network标签,再点击查询,有查询URL,这个将是我们要使用的URL,但是发现from_station 和to_station并不是汉字,是一个代号;
4、获取各个站点的代号,打开网面的源代码可以查询到汉字与代号的转换的URL:https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9010
5、将用户的请求转换为站点代号再请求数据;
第一步:
先获取站点的代号(调用函数时将转换URL代入参数即可):
def Main(IP):
Re = urllib2.Request(IP)
try:
Response = urllib2.urlopen(Re,timeout=5)
with open ('./urllib2_content.txt','w+') as fp:
fp.write(Response.read())
print "目标地址为:%s"%Response.geturl()
print "目标返回代码为:%s"%Response.getcode()
print "目标信息为:%s"%Response.info()
print "已获取目标主机内容,存放当前目录下的urllib2_content.txt,请自行查看!!!"
第二步:解析站点代码(此部分没有很好解决中文字符的匹配)
#!/usr/bin/env python
#coding:utf-8
import re
with open('urllib2_content.txt') as fp:
text = fp.read()
stations = re.findall(u"([\x80-\xff]+)\|([A-Z]+)",text)
for i in stations:
print "\""+i[0]+"\""+" : "+"\""+i[1]+"\""+","
第三步:将解析后的代码制作成字典(部分内容)
#!/usr/bin/env python
#coding:utf-8
stations = {"北京北" : "VAP",
"北京东" : "BOP",
"北京" : "BJP",
"北京南" : "VNP",
"北京西" : "BXP"......}
第四步:请求转换
#!/usr/bin/env python
#coding:utf-8
"""Train tickets query via command-line.
Usage:
tickets [-gdtkz]
Options:
-h,--help 帮助
-g 高铁
-d 动车
-t 特快
-k 快车
-z 直达
Example:
tickets 南京 北京 2016-07-01
tickets -dg 南京 北京 2016-07-01
"""
import docopt,json,requestsfrom station import stations
def cli():
"""command-line interface"""
arguments = docopt.docopt(__doc__)
from_station = stations.get(arguments[''])
to_station = stations.get(arguments[''])
date = arguments['']
url = "https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=%s&leftTicketDTO.from_station=%s&leftTicketDTO.to_station=%s&purpose_codes=ADULT"%(date,from_station,to_station)
j = 0
r = requests.get(url,verify=False)
for i in r.json()["data"]["result"]:
print i
j += 1
print j
if __name__ == "__main__":
cli()
python查询12306余票_Python实现查询12306火车票信息相关推荐
- python查询12306余票_Python脚本实现12306火车票查询系统
最近我看到看到使用python实现火车票查询,我自己也实现了,感觉收获蛮多的,下面我就把每一步骤都详细给分享出来.(注意使用的是python3) 首先我将最终结果给展示出来: 在cmd命令行执行:py ...
- (二)、Python查询12306余票:联网查询余票信息并解析
前一篇–>实现始发站.终点站和出发日期的合法性检验 以下如果有的变量不明白说明在前面的文章已经介绍了,切记! 首先我们来看看每查询一条信息12306网站返回的信息: 请求链接: https:// ...
- 12306余票及票价查询
还原整个思路,遇到的一些问题也会写出来,纯新手向,因为打包在了一个类里,所以单独拷贝一个函数可能会有些问题,后面有完整代码地址,如有错误可以指正- -有问题也可以留言,后面写的有些赶,可以去完整源代码 ...
- python批量自动订票_python+splinter实现12306网站刷票并自动购票流程
python+splinter实现12306网站刷票并自动购票流程 通过python+splinter,实现在12306网站刷票并自动购票流程(无法自动识别验证码). 此类程序只是提高了12306网站 ...
- 最新Python实现12306余票查询系统
首先感谢这篇博客的引导,但是这篇文章已经比较旧了,12306进行了改版,源码编排方式有了变化.12306源码获取的方法可以从这篇博客中学习,我在这里主要贴出对于目前最新的12306的Python余票查 ...
- Python之12306余票查询
简单的Python学习,用Python完成一个12306余票查询- Python之12306余票查询 参考资料来自Python 实现火车票查询工具 需要用到的第三方库 requests,使用 Pyth ...
- (五)Python查询12306余票:添加票价信息
前一篇–>docopt实现参数的输入-–查询任意时间任意车站余票 票价的查询根据前面result的解析是无法获取的,票价需要另外发送请求获取. 请求链接: https://kyfw.12306. ...
- 火车票查询系统(一)——利用python实现监控12306余票查询
最近春运高峰,本人从12月开始买过年回家的火车票,然鹅~现实总是那么残酷,放票时间记不住,要么就是不能实时盯着刷票,外面的软件也不知道靠不靠谱,反正是没买到票,所以一怒之下,自己做一个12306余票查 ...
- 12306 余票查询API浅探索
12306 余票查询API浅探索 余票查询请求分析 响应数据解密代码查找调试 数据说明 余票查询请求分析 点击查询,F12进入控制台,进入NetWork面板,查看发送的请求: 点入请求查看详情,很明显 ...
- 返乡之路不容易之12306余票查询并给出备选方案v2
在第一版的返乡之路不容易之12306余票查询并给出备选方案中,给出了余票查询和备选方案推荐,但当时有两个问题: 没有备选排名:虽然给出了备选,但哪个备选好没有给出排序 没有座位信息(商务/一等/二等/ ...
最新文章
- 公司电脑安装操作系统遇到的一个坑
- 我的ASP.NET AJAX控件——PopupNotificationExtender:实现OWA或Messenger样式的信息提示窗口...
- java中instanceof 详解_java中的instanceof用法详解
- webpack打包测试_webpack入门笔记(一)
- 创建自定义Tabs组件-01
- Pyqt Model/view框架 3.可编辑项
- windows会不会被linux取代,深度Linux系统会取代Windows系统吗?
- CATIA VBA二次开发介绍
- js 返回值提示框不提示
- 微信公众号不限次数发送消息
- mysql创建聚集索引sql_SQL:聚集索引和非聚集索引
- “鲁班”画海报、“小蜜”当客服,“菜鸟”管物流……,双十一阿里黑科技知多少...
- matlab二项式,动态规划 – 计算二项式系统 —MATLAB代码 – 算法网
- 关于眼镜的后续。。。。
- 多页面实现-个人中心
- 电脑怎么打开隐藏文件夹?1分钟搞定!
- 08-Hadoop之Zookeeper详解
- antd select 等组件可搜索问题
- 周末去哪儿架构师跟你聊:大数据平台快速解决方案
- 2021卫辉高考成绩查询,卫辉中考成绩查询2021
热门文章
- Springcloud服务调用Feign组件以及负载均衡
- My Thirty-eighth - 验证二叉树搜索树 - By Nicolas
- Emulator: emulator: WARNING: EmulatorService.cpp:448: Cannot find certfile: C:\Users\zhuangqingze\.a
- 不使用拇指玩安装器安装GPK文件
- 多种方式查看电脑是否支持Modern Standby
- GMap.NET 使用教程【1】
- Day2--安装MediaWiki搭建自己的个人百科
- Windows上WinRAR.exe命令行参数说明
- 小程序“成语猜题”部分答案
- 触发onblur事件alert死循环问题