python学费12306_python【练手】12306查票
[Python] 纯文本查看 复制代码# coding:utf-8
import json
import requests
import urllib3
import os
import pickle
import re
FILENAME = 'station.pickle'
urllib3.disable_warnings()
HEADERS = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
"Host":"kyfw.12306.cn",
"Referer":"https://kyfw.12306.cn/otn/passport?redirect=/otn/"
}
SESSION = requests.Session()
SESSION.headers.update(HEADERS)
SESSION.verify = False
SESSION.get('https://kyfw.12306.cn/otn/login/init')
def station_name():
url='https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9085'
response = SESSION.get(url)
station_name = {}
station_list=response.text.replace('var station_names =','')
station_list=station_list[1:-2]
station_list=station_list.split('@')[1:]
for i in station_list:
i=i.split('|')
station_name[i[1]] = i[2]
with open(FILENAME, 'wb') as f:
pickle.dump(station_name, f)
def check_ticket():
from_station_name=input('请输入你的出发地(例如:北京):\n')
to_station_name=input('请输入你的目的地(例如:上海):\n')
date=input('请输入你的乘车时间(例如:2018-12-27):\n')
with open(FILENAME, 'rb') as f:
station_name = pickle.load(f)
try:
from_station_code=station_name[from_station_name]
to_station_code=station_name[to_station_name]
date_re = re.search(r"\d{4}-\d{1,2}-\d{1,2}", date)
if date_re == None:
print('时间输入有误!,请重新输入')
check_ticket()
except:
print('输入的站台有误,请重新输入!')
check_ticket()
url='https://kyfw.12306.cn/otn/leftTicket/queryZ?leftTicketDTO.train_date='+date+'&leftTicketDTO.from_station='+from_station_code+'&leftTicketDTO.to_station='+to_station_code+'&purpose_codes=ADULT'
response = SESSION.get(url)
response.encoding = 'utf-8'
try:
station_dict=json.loads(response.text)
except:
print( 'ERROR,信息获取错误,重新连接!' )
check_ticket()
result = station_dict['data']['result']
res_map = station_dict['data']['map']
for station in result:
station = station.split('|')
print('**********************************************************')
#显示列车详情
from_station = res_map[station[6]]
to_station = res_map[station[7]]
for i in range(len(station)):
if station[i] == '':
station[i] = '--'
print('''时间:%s 车次:%s 出发站-到达站:%s-%s 出发时间-到达时间:%s-%s 历时:%s''' %(
date, station[3], from_station, to_station, station[8], station[9], station[10]))
print('''
商务座、特等座:%s
一等座:%s
二等座:%s
软卧:%s
硬卧:%s
硬座:%s
无座:%s
''' %(station[32], station[31], station[30], station[23], station[28], station[29], station[26]))
def main():
if os.path.isfile(FILENAME):
pass
else:
station_name()
check_ticket()
if __name__ == '__main__':
main()
python学费12306_python【练手】12306查票相关推荐
- 基于Python 3.4 实现的12306查票器
学了一学期Python还是让我感受到这是一门强大的语言,如果能熟练使用许多库的话,它给人带来的方便是非常大的, 很难想象一位Freelancer当初单枪匹马搞出来的语言,如今能发展壮大到这个程度! 本 ...
- 快过年了,Python实现12306查票以及自动购票....
嗨害大家好鸭!我是小熊猫~ 明天就是2023年啦~ 还有谁像我小熊猫一样没有回家的? 这次康康能不能12306抢票回家!!! Python实现12306查票以及自动购票 [代码来源]: 青灯教育-自游 ...
- Python 小小爬虫练手,爬取自己的IP
Python 小小爬虫练手,爬取自己的IP import re import urllib.request url="http://2020.ip138.com/i ...
- python爬虫抢火车票_如何用python写一个简单的12306抢票软件|python 爬火车票 教程...
python 如果抓取验证码图片 类似12306的登录验证码图片 这个以前做次.最大的麻烦是码的识别算法的识别率太低.12306那种网站登陆错3次就限制你20分钟.所以除非你有33%以上的识别率否则不 ...
- python爬虫简单练手:音乐top250
python爬虫简单练手:音乐top250 使用的库bs4和requests: 通过requests发送网络请求 通过bs4的beautifulsoup解析html 页面分析: top250一共有10 ...
- 用Python实现一个简单好用的12306查票系统
春节快到了,又要到一年中紧张刺激的时候了! 买票回家! 今天教大家想做一个简单好用的查票系统! 本次用到环境和模块 环境: Python 3.6 Pycharm 模块 requests pandas ...
- python写一个简单的12306抢票
引言 每逢过年就到了12306抢票高峰期,自己总想研究一下12306购票的流程,虽然网上已经很多资料,但是总比不过自己的亲身体会,于是便琢磨着写一个抢票软件,本人比较熟悉python,所以软件是用py ...
- vue+node+mongoDB火车票H5(七)-- nodejs 爬12306查票接口
菜鸟一枚,业余一直想做个火车票查票的H5,前端页面什么的已经写好了,node+mongoDB 也写了一个车站的接口,但 接下来的爬12306获取车次信息数据一直卡住,网上的爬12306的大部分是pyt ...
- python学习笔记-练手实例
1.题目:输出 9*9 乘法口诀表. 程序分析:分行与列考虑,共9行9列,i控制行,j控制列 代码: for i in range(1,10):print ('\r')for j in range(1 ...
- 从爬虫构建数据集到CNN模型的验证码识别,一步一步搭建基于Python的PC个人端12306抢票程序
写在前面:这个程序不是一个人能在短时间内完成的,感谢达纳,王哥的支持帮助.也感谢小平老师,没有压迫,就没有项目. 简介:这是一篇很硬核的Blog, 有一定Python基础的童鞋方能看懂,本程序的主要内 ...
最新文章
- 程序员必备技能:如何画好架构图?
- 如何确定敏捷是否适合你的团队?
- Smark.Data 值转换器
- 逻辑网络拓扑与物理网络拓扑—Vecloud微云
- mysql更新日志问题
- python windows和linux路径_python复制文件,路径不存在问题(Windows和linux路径分隔符不统一)...
- axios拦截器的实现
- 【Python】字符串反转
- robot framework好的学习网址
- python安装盒怎么打开_安装MySQL-python报错
- Linux下MySQL基础使用命令
- 史上最实用mysql参数之一-----sql_safe_updates
- ubuntu 常用配置
- MySQL索引类型总结和使用技巧以及注意事项(转)
- 高质量计算机学习网站
- java支付管理有源码_一款java版可接入微信、支付宝的三方支付系统项目
- 批量获取中国所有行政区域经边界纬度坐标(到县区级别)
- TXT文件导入mysql
- Android 安全与防护策略
- Googler高级工程师打造“厂外生存指南”,程序员感叹,圆我大厂梦
热门文章
- html5怎么实现雨滴效果,雨滴效果——HTML5之特效
- 【认知】为什么你 30 岁了还在选择中挣扎?中年危机要顺从规律,建立一套自己的处事哲学
- 国内三大手机运营商号段
- Demo_塔防(自动生成怪物,导航,炮塔攻击,怪物掉血死忙)
- 结构变异( SV )分析介绍
- 机器学习基础--回归(Regression)
- css的height,min-height,max-height,min-width.....
- 2020江苏选调考察体检环节的记录
- 【入门-08】系统控制单元(SCU)
- arduino运行max6675 K型热电偶模块