最新Python实现12306余票查询系统
来源:互联网 发布:三月软件小组 编辑:程序博客网 时间:2024/04/27 22:29
首先感谢这篇博客的引导,但是这篇文章已经比较旧了,12306进行了改版,源码编排方式有了变化。12306源码获取的方法可以从这篇博客中学习,我在这里主要贴出对于目前最新的12306的Python余票查询程序,可供用于学习Python的基本用法,正则表达的使用,简单爬虫的使用。下面是效果图,因为我用的是windows,对命令框里的代码着色比较麻烦,有兴趣的朋友可以自己尝试去给输出的文字添加颜色。
#####################获取站台字典,已放在stations.py无需运行#######################import re#import urllib#import ssl#from urllib import request#import requests#from pprint import pprint#ssl._create_default_https_context = ssl._create_unverified_context#url = 'https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9018'#req = urllib.request.Request(url)#r = urllib.request.urlopen(req).read().decode('utf-8')##print (r)#stations =re.findall(r'([\u4e00-\u9fa5]+)\|([A-Z]+)',r) #匹配中文和对应的英文#stations = dict(stations)#stations = dict(zip( stations.keys(),stations.values()))#将匹配的内容转化为字典#pprint(stations) #以列的形式打印出来#################################################################################################################################################################功能:12306余票查询#作者:wildwind_#时间:2017.07.08################################################################################import refrom station import stationsimport warningsimport jsonimport urllibfrom urllib import requestimport requestsfrom pprint import pprintfrom prettytable import PrettyTable#输入引导f1= input('请输入起始城市:\n')f = stations[f1]t1= input('请输入目的城市:\n')t = stations[t1]d1=input('请输入出发时间: \n')d=str('2017-')+str(d1) #这里讲年份设置为固定值,可以减少输入操作。print ('正在查询'+f1+'至'+t1+'的列车,请稍等...') #个性旁白#获取数据url = 'https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date='+d+'&leftTicketDTO.from_station='+f+'&leftTicketDTO.to_station='+t+'&purpose_codes=ADULT'warnings.filterwarnings("ignore") #这个网站是有安全警告的,这段代码可以忽略警告r = requests.get(url, verify=False) #请求网址的内容rows = r.json()['data']['result'] #将内容解析为列表data1 = []data = []for m in rows: data1.append(re.findall(r'[\u4e00-\u9fa5]订(.*)|[\u4e00-\u9fa5]售(.*)|[\u4e00-\u9fa5]运(.*)',m))for n in data1: data.append(str(n).split('|'))#制作表格trains= PrettyTable()trains.field_names=["车次","车站","时间","历时","商务特等座","一等座","二等座","高级软卧","软卧","动卧","硬卧 ","软座 ","硬座","无座","其他"] #设置table的headernum = len(data) #打印列表的个数stations_new= dict(zip(stations.values(), stations.keys()))for row in data : #列表循环 trains.add_row([row[2], '\n'.join([stations_new[row[5]],stations_new[row[6]]]), '\n'.join([row[7], row[8]]),row[9], row[-4] if row[-4] != '' else '--',row[-5] if row[-5] != '' else '--', row[-6] if row[-6] != '' else '--',row[-15] if row[-15] != '' else '--', row[-13] if row[-13] != '' else '--',row[-3] if row[-3] != '' else '--', row[-8] if row[-8] != '' else '--',row[-11] if row[-11] != '' else '--', row[-7] if row[-7] != '' else '--',row[-10] if row[-10] != '' else '--', row[-14] if row[-14] != '' else '--'])print ('查询结束,共有 %d 趟列车。'%num ) #列表个数也就是列车个数print (trains)
阅读全文
0 0
- 最新Python实现12306余票查询系统
- 铁路局12306余票查询的实现
- python3 实现12306查询余票
- Python爬虫----12306火车票余票查询器
- 实验楼 python 火车票余票查询
- 获取12306最新的余票信息
- 获取12306最新的余票信息 .
- 12306火车余票查询
- android 12306余票查询
- python:12306余票爬虫
- 12306火车余票查询API
- 12306实时余票查询接口
- 12306余票查询(爬虫)
- java模拟12306查询余票
- 用Node.js实现余票查询并用邮件通知
- 做个火车余票查询接口,余票来源12306,图是百度地图
- python(requests) ---- 愚蠢的爬12306余票--python学习
- 火车余票查询的API,12306官方的API
- 【C++】C++琐碎的知识点
- 跟我一起学C语言
- java 坦克大战
- 构造Json字段
- java接口
- 最新Python实现12306余票查询系统
- Android-自定义UI与触摸事件
- C语言时间差
- HTNL基础--(二)
- OpenCV的setTo函数及Mat mat=labels==1详解
- Activity 之间的数据传递
- 理解Python装饰器
- BP+SGD+激活函数+代价函数+基本问题处理思路
- 洛谷Oj-均分纸牌-贪心