12306火车票查询工具

 使用Python实现的火车票查询工具:  Usage: ticket.py [-gdtzk] <from> <to> <date>  Options:      -h,--help   帮助信息      -a          所有      -g          高铁      -d          动车      -t          特快      -z          直达      -k          快速    Demo: ticket.py shenzhen beijing 20161001 -g

  

 1 #!/usr/bin/env python
 2 #coding:utf-8
 3 import urllib2,re,json
 4 import ssl,sys,datetime
 5 from prettytable import PrettyTable
 6 ssl._create_default_https_context = ssl._create_unverified_context #设置SSL为不验证的方式
 7 def Parser_station(station_name): #获得站点名对应站点代号的字典
 8     url_code="https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.8966"
 9     response=urllib2.urlopen(urllib2.Request(url_code))
10     result=response.read()
11     stations=re.findall(r‘([A-Z]+)\|([a-z]+)‘,result)
12     stations=dict(stations)
13     stations_dict=dict(zip(stations.values(),stations.keys()))
14     return stations_dict[station_name]
15
16 def Print_ticket(from_station,to_station,select_date,option=‘-a‘):
17     print "旅行计划:\t"+select_date+‘\t‘+from_station+"\t--->\t"+to_station+"\t"+‘[查询时间:\t‘+datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")+‘]‘
18     from_station=Parser_station(from_station) #获得起点的代号
19     to_station=Parser_station(to_station) #获得终点的代号
20     select_date=select_date[0:4]+‘-‘+select_date[4:6]+‘-‘+select_date[6:]
21     url_info="https://kyfw.12306.cn/otn/lcxxcx/query?purpose_codes=ADULT&queryDate=%s&from_station=%s&to_station=%s" % (select_date,from_station,to_station)
22     response=urllib2.urlopen(urllib2.Request(url_info))
23     result=response.read()
24     info=json.loads(result)
25     train_list=info[‘data‘][‘datas‘]
26     pt=PrettyTable()
27     header=["时间",‘历时‘,‘车次‘,"站点",‘商务座‘,‘特等座‘,‘一等座‘,‘二等座‘,‘高级软卧‘,‘软卧‘,‘硬卧‘,‘软座‘,‘硬座‘,‘无座‘,‘其它‘,‘备注‘]
28     pt.field_names=header
29     tmp=u"正常车次,不受控"
30     num=0
31     option=list(option)[1:]
32     for i in train_list:
33         if i[‘controlled_train_message‘] == tmp:
34             i[‘controlled_train_message‘]=‘‘
35         else:
36             pass
37         train_time=‘\033[92m‘+i[‘start_time‘]+‘\033[0m‘+"\n"+‘\033[91m‘+i[‘arrive_time‘]+‘\033[0m‘
38         train_station=‘\033[92m‘+i[‘from_station_name‘]+‘\033[0m‘+"\n"+‘\033[91m‘+i[‘to_station_name‘]+‘\033[0m‘
39         li=[train_time,i[‘lishi‘],i[‘station_train_code‘],train_station,i[‘swz_num‘],i[‘tz_num‘],i[‘zy_num‘],i[‘ze_num‘],i[‘gr_num‘],i[‘rw_num‘],i[‘yw_num‘],i[‘rz_num‘],i[‘yz_num‘],i[‘wz_num‘],i[‘qt_num‘],i[‘controlled_train_message‘]]
40         train_code=str(i[‘station_train_code‘][0]).lower()
41         if train_code in option:
42             pt.add_row(li)
43             num+=1
44         elif ‘h‘ in option:
45             print ‘‘‘
46             Usage: ticket.py [-gdtzk] <from> <to> <date>
47             Options:
48                 -h,--help   帮助信息
49                 -a          所有
50                 -g          高铁
51                 -d          动车
52                 -t          特快
53                 -z          直达
54                 -k          快速
55             Example:
56                 ticket.py shenzhen beijing 20161001 -g
57             ‘‘‘
58             return 0
59         elif ‘a‘ in option:
60             pt.add_row(li)
61             num+=1
62         else:
63             pass
64     print pt
65     print "Total: ",num
66 if len(sys.argv) < 5:
67     Print_ticket(sys.argv[1],sys.argv[2],sys.argv[3])
68 else:
69     Print_ticket(sys.argv[1],sys.argv[2],sys.argv[3],sys.argv[4])
时间: 2024-10-18 22:03:09

12306火车票查询工具的相关文章

Python3实现火车票查询工具

Python 实现火车票查询工具 一. 实验介绍 通过python3实现一个简单的命令行版本的火车票查询工具,用实际中的例子会更感兴趣,不管怎么样,既练习了又可以自己使用. 1.  知识点: Python 基础知识的综合运用 docopt, requests, colorama, prettytable 库的使用 setuptools 的使用 2. 效果截图: 二. 接口设计 接口我们就按照12306官网的查询格式如下:   程序名: pickets 查询方式: 程序名 出发地 目的地 出发日

聚合数据iOS SDK 12306火车票查询订票演示示例

1,将聚合数据SDK(JuheApis.framework)添加到你的程序中来,SDK依赖的包包括: 2,在聚合SDK Framework的JHSDKAPIPath.h文件中找到快递查询接口宏,以及字典参数 /* 12306火车票查询订票 *//**@brief 2306火车票查询订票--1.车次查询@param lname string 必填 车次名称,如:G4@param ldtype string 非必填 返回数据的格式,xml或json,默认json*/#define kJHAPIS_L

12306火车票查询爬虫(基于selenium)

今天写一下12306火车票查询的爬虫,新手一个,代码方面可能不是那么整洁,望海涵... 一. 这个火车票爬虫感觉还是有点难度的,一些小细节需要考虑. 二. 还是先讲一下思路:  获得火车票查询URL----->单击'单程'------->点击出发输入框,输入城市,选取站点------>目的地输入同上一步------>点击出发日期那个框,选取出发日期.------>点击"查询"按钮------>前面几步用selenuim实现------>创建几个

使用Python和Splinter实现12306火车票查询与抢票

有一段时间没有使用Python了,前几天经朋友提起一篇关于用Python实现抢火车票的文章,百度了实现抢火车票的技术细节,网上却有不少资料,也不是新鲜的东西.在了解了一些技术手段,阅读了一些大神的博文后,也尝试实现了一下,代码写得粗糙,纯当娱乐,本文在Windows系统下完成.需要提到的是,抢票过程中的验证码部分只能手动完成. 首先,我需要的工具和组件有: Chrome浏览器 浏览器驱动ChromeDriver Python 3.5 Web应用测试工具Splinter Chrome浏览器可自行下

聚合数据Android SDK 12306火车票查询订票演示示例 编辑

1.聚合SDK是聚合数据平台,为移动开发者提供的免费数据接口.使用前请先到聚合平台(http://www.juhe.cn/)注册,申请相关数据. 2.下载聚合数据SDK,将开发包里的juhe_sdk_v_1_1.jar拷贝到libs根目录下,将libJuheSDK_v_1_0.so拷贝到libs\armeabi目录下,如图: 3. 根据接口说明文档找到以下方法: Java代码   /** * 获取车次 * * @param name *            车次 * @param jsonCa

练习js——自动化实现12306火车票查询

# !/usr/bin/env python3 # -*- coding: utf-8 -*- # @Time : 2019/12/1 09:03 # @Author : "小多肉" # @Email : [email protected] # @File : task1127.py # @Software: PyCharm import time from datetime import datetime, timedelta from selenium import webdriv

12306泄露信息查询工具 12306回应信息泄露

12306用户数据泄露今年日登上各大媒体头版头条,从曝光的截图来看,泄露结果超过13万条,包括邮箱.手机号.身份证号等敏感信息一一在列. 更让人恐怖的是,已经有网友反映,称自己在12306上买好的火车票不见了,显然是被人利用泄露信息给恶意退掉了! 此外,泄露资料的用户还很可能遭遇各种骚扰.诈骗,比如说各种垃圾短信和广告,比如说以退票为借口的行骗,而且因为很多人还都在网站上填写了亲人.好友信息共同买票,甚至可能牵连亲友. 当下之急,就是立即修改12306密码,而且尽量不要和其它网站上的密码重复.

微信小程序--火车票查询

原文:http://www.cnblogs.com/tgyf/p/5960979.html 写在最前面 微信小程序自九月份推出内测资格以来,经历了舆论热潮到现在看似冷清,但并不意味着大家不那么关注或者不关注了.我想不管是否有内测资格,只要是感兴趣的开发者已经进入潜心耕耘产品的阶段了,至少是静下心来思考与学习.如果对微信小程序的前途和定位有什么疑惑,可以看看这篇文章http://lib.csdn.net/article/wechat/46742. 下面从字母a开始编号的内容主要作为后续学习与思考后

使用scrapy进行12306车票查询

概述 通过12306的查询API进行查询某日火车票, 结果保存在csv文件中. 详细 代码下载:http://www.demodashi.com/demo/12623.html 一.环境搭建 1. 安装配置python3.6 示例网站使用的是python 3.6.1 下载地址:https://www.python.org/downloads/release/python-361/ 根据自己的系统选择相应的版本 2. 安装Twisted Windows: 进入http://www.lfd.uci.