[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查票相关推荐

  1. 基于Python 3.4 实现的12306查票器

    学了一学期Python还是让我感受到这是一门强大的语言,如果能熟练使用许多库的话,它给人带来的方便是非常大的, 很难想象一位Freelancer当初单枪匹马搞出来的语言,如今能发展壮大到这个程度! 本 ...

  2. 快过年了,Python实现12306查票以及自动购票....

    嗨害大家好鸭!我是小熊猫~ 明天就是2023年啦~ 还有谁像我小熊猫一样没有回家的? 这次康康能不能12306抢票回家!!! Python实现12306查票以及自动购票 [代码来源]: 青灯教育-自游 ...

  3. Python 小小爬虫练手,爬取自己的IP

                 Python 小小爬虫练手,爬取自己的IP import re import urllib.request url="http://2020.ip138.com/i ...

  4. python爬虫抢火车票_如何用python写一个简单的12306抢票软件|python 爬火车票 教程...

    python 如果抓取验证码图片 类似12306的登录验证码图片 这个以前做次.最大的麻烦是码的识别算法的识别率太低.12306那种网站登陆错3次就限制你20分钟.所以除非你有33%以上的识别率否则不 ...

  5. python爬虫简单练手:音乐top250

    python爬虫简单练手:音乐top250 使用的库bs4和requests: 通过requests发送网络请求 通过bs4的beautifulsoup解析html 页面分析: top250一共有10 ...

  6. 用Python实现一个简单好用的12306查票系统

    春节快到了,又要到一年中紧张刺激的时候了! 买票回家! 今天教大家想做一个简单好用的查票系统! 本次用到环境和模块 环境: Python 3.6 Pycharm 模块 requests pandas ...

  7. python写一个简单的12306抢票

    引言 每逢过年就到了12306抢票高峰期,自己总想研究一下12306购票的流程,虽然网上已经很多资料,但是总比不过自己的亲身体会,于是便琢磨着写一个抢票软件,本人比较熟悉python,所以软件是用py ...

  8. vue+node+mongoDB火车票H5(七)-- nodejs 爬12306查票接口

    菜鸟一枚,业余一直想做个火车票查票的H5,前端页面什么的已经写好了,node+mongoDB 也写了一个车站的接口,但 接下来的爬12306获取车次信息数据一直卡住,网上的爬12306的大部分是pyt ...

  9. python学习笔记-练手实例

    1.题目:输出 9*9 乘法口诀表. 程序分析:分行与列考虑,共9行9列,i控制行,j控制列 代码: for i in range(1,10):print ('\r')for j in range(1 ...

  10. 从爬虫构建数据集到CNN模型的验证码识别,一步一步搭建基于Python的PC个人端12306抢票程序

    写在前面:这个程序不是一个人能在短时间内完成的,感谢达纳,王哥的支持帮助.也感谢小平老师,没有压迫,就没有项目. 简介:这是一篇很硬核的Blog, 有一定Python基础的童鞋方能看懂,本程序的主要内 ...

最新文章

  1. 程序员必备技能:如何画好架构图?
  2. 如何确定敏捷是否适合你的团队?
  3. Smark.Data 值转换器
  4. 逻辑网络拓扑与物理网络拓扑—Vecloud微云
  5. mysql更新日志问题
  6. python windows和linux路径_python复制文件,路径不存在问题(Windows和linux路径分隔符不统一)...
  7. axios拦截器的实现
  8. 【Python】字符串反转
  9. robot framework好的学习网址
  10. python安装盒怎么打开_安装MySQL-python报错
  11. Linux下MySQL基础使用命令
  12. 史上最实用mysql参数之一-----sql_safe_updates
  13. ubuntu 常用配置
  14. MySQL索引类型总结和使用技巧以及注意事项(转)
  15. 高质量计算机学习网站
  16. java支付管理有源码_一款java版可接入微信、支付宝的三方支付系统项目
  17. 批量获取中国所有行政区域经边界纬度坐标(到县区级别)
  18. TXT文件导入mysql
  19. Android 安全与防护策略
  20. Googler高级工程师打造“厂外生存指南”,程序员感叹,圆我大厂梦

热门文章

  1. html5怎么实现雨滴效果,雨滴效果——HTML5之特效
  2. 【认知】为什么你 30 岁了还在选择中挣扎?中年危机要顺从规律,建立一套自己的处事哲学
  3. 国内三大手机运营商号段
  4. Demo_塔防(自动生成怪物,导航,炮塔攻击,怪物掉血死忙)
  5. 结构变异( SV )分析介绍
  6. 机器学习基础--回归(Regression)
  7. css的height,min-height,max-height,min-width.....
  8. 2020江苏选调考察体检环节的记录
  9. 【入门-08】系统控制单元(SCU)
  10. arduino运行max6675 K型热电偶模块