例子来源于马哥的公众号,看了几遍,有些地方存在些疑问,然后就自己查找些资料,重写的一下,但是对于获取到的信息,并不能有效的解析出来,而且对于中文字符处理,并不是很好,请大神指教下!谢过!

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火车票信息相关推荐

  1. python查询12306余票_Python脚本实现12306火车票查询系统

    最近我看到看到使用python实现火车票查询,我自己也实现了,感觉收获蛮多的,下面我就把每一步骤都详细给分享出来.(注意使用的是python3) 首先我将最终结果给展示出来: 在cmd命令行执行:py ...

  2. (二)、Python查询12306余票:联网查询余票信息并解析

    前一篇–>实现始发站.终点站和出发日期的合法性检验 以下如果有的变量不明白说明在前面的文章已经介绍了,切记! 首先我们来看看每查询一条信息12306网站返回的信息: 请求链接: https:// ...

  3. 12306余票及票价查询

    还原整个思路,遇到的一些问题也会写出来,纯新手向,因为打包在了一个类里,所以单独拷贝一个函数可能会有些问题,后面有完整代码地址,如有错误可以指正- -有问题也可以留言,后面写的有些赶,可以去完整源代码 ...

  4. python批量自动订票_python+splinter实现12306网站刷票并自动购票流程

    python+splinter实现12306网站刷票并自动购票流程 通过python+splinter,实现在12306网站刷票并自动购票流程(无法自动识别验证码). 此类程序只是提高了12306网站 ...

  5. 最新Python实现12306余票查询系统

    首先感谢这篇博客的引导,但是这篇文章已经比较旧了,12306进行了改版,源码编排方式有了变化.12306源码获取的方法可以从这篇博客中学习,我在这里主要贴出对于目前最新的12306的Python余票查 ...

  6. Python之12306余票查询

    简单的Python学习,用Python完成一个12306余票查询- Python之12306余票查询 参考资料来自Python 实现火车票查询工具 需要用到的第三方库 requests,使用 Pyth ...

  7. (五)Python查询12306余票:添加票价信息

    前一篇–>docopt实现参数的输入-–查询任意时间任意车站余票 票价的查询根据前面result的解析是无法获取的,票价需要另外发送请求获取. 请求链接: https://kyfw.12306. ...

  8. 火车票查询系统(一)——利用python实现监控12306余票查询

    最近春运高峰,本人从12月开始买过年回家的火车票,然鹅~现实总是那么残酷,放票时间记不住,要么就是不能实时盯着刷票,外面的软件也不知道靠不靠谱,反正是没买到票,所以一怒之下,自己做一个12306余票查 ...

  9. 12306 余票查询API浅探索

    12306 余票查询API浅探索 余票查询请求分析 响应数据解密代码查找调试 数据说明 余票查询请求分析 点击查询,F12进入控制台,进入NetWork面板,查看发送的请求: 点入请求查看详情,很明显 ...

  10. 返乡之路不容易之12306余票查询并给出备选方案v2

    在第一版的返乡之路不容易之12306余票查询并给出备选方案中,给出了余票查询和备选方案推荐,但当时有两个问题: 没有备选排名:虽然给出了备选,但哪个备选好没有给出排序 没有座位信息(商务/一等/二等/ ...

最新文章

  1. 公司电脑安装操作系统遇到的一个坑
  2. 我的ASP.NET AJAX控件——PopupNotificationExtender:实现OWA或Messenger样式的信息提示窗口...
  3. java中instanceof 详解_java中的instanceof用法详解
  4. webpack打包测试_webpack入门笔记(一)
  5. 创建自定义Tabs组件-01
  6. Pyqt Model/view框架 3.可编辑项
  7. windows会不会被linux取代,深度Linux系统会取代Windows系统吗?
  8. CATIA VBA二次开发介绍
  9. js 返回值提示框不提示
  10. 微信公众号不限次数发送消息
  11. mysql创建聚集索引sql_SQL:聚集索引和非聚集索引
  12. “鲁班”画海报、“小蜜”当客服,“菜鸟”管物流……,双十一阿里黑科技知多少...
  13. matlab二项式,动态规划 – 计算二项式系统 —MATLAB代码 – 算法网
  14. 关于眼镜的后续。。。。
  15. 多页面实现-个人中心
  16. 电脑怎么打开隐藏文件夹?1分钟搞定!
  17. 08-Hadoop之Zookeeper详解
  18. antd select 等组件可搜索问题
  19. 周末去哪儿架构师跟你聊:大数据平台快速解决方案
  20. 2021卫辉高考成绩查询,卫辉中考成绩查询2021

热门文章

  1. Springcloud服务调用Feign组件以及负载均衡
  2. My Thirty-eighth - 验证二叉树搜索树 - By Nicolas
  3. Emulator: emulator: WARNING: EmulatorService.cpp:448: Cannot find certfile: C:\Users\zhuangqingze\.a
  4. 不使用拇指玩安装器安装GPK文件
  5. 多种方式查看电脑是否支持Modern Standby
  6. GMap.NET 使用教程【1】
  7. Day2--安装MediaWiki搭建自己的个人百科
  8. Windows上WinRAR.exe命令行参数说明
  9. 小程序“成语猜题”部分答案
  10. 触发onblur事件alert死循环问题