【12306购票】预定订单初始化、解析用户信息以及坐席信息
预定订单初始化、解析用户信息以及坐席信息
- 1. 预定订单初始化
- 2. 获取用户信息
- 3. 解析用户信息
- 4. 获取乘客信息列表
- 5. 解析坐席类型
- 6. 构造乘客信息
学习目标
- 了解 预定订单初始化
- 了解 解析构造用户信息
- 了解 解析构造坐席信息
1. 预定订单初始化
# 12306.funk12306.Funk12306.buy_ticket# 检查用户是否保持登录成功url = 'https://kyfw.12306.cn/otn/login/checkUser'data = {'_json_att': ''}resp = self.s.post(url, data=data)print(json.loads(resp.text))# 点击预定url = 'https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest'data = {'secretStr': secretStr,'train_date': train_date,'back_train_date': train_date,'tour_flag': 'dc', # dc 单程 wf 往返'purpose_codes': 'ADULT', # 成人'query_from_station_name': from_station,'query_to_station_name': to_station,'undefined': ''}resp = self.s.post(url, data=data)print(resp.text)# 订单初始化 获取REPEAT_SUBMIT_TOKEN key_check_isChangeurl = 'https://kyfw.12306.cn/otn/confirmPassenger/initDc'data = {'_json_att': ''}response = self.s.post(url, data=data)repeat_submit_token = re.search(r"var globalRepeatSubmitToken = '([a-z0-9]+)';",response.content.decode()).group(1)key_check_isChange = re.search("'key_check_isChange':'([A-Z0-9]+)'", response.content.decode()).group(1)
2. 获取用户信息
# 12306.funk12306.Funk12306.buy_ticket# 获取用户信息# 需要 REPEAT_SUBMIT_TOKENurl = 'https://kyfw.12306.cn/otn/confirmPassenger/getPassengerDTOs'data = {'_json_att': '','REPEAT_SUBMIT_TOKEN': repeat_submit_token}response = self.s.post(url, data=data)
3. 解析用户信息
# 12306.utils.parse_passengerdef parsePassenger(passenger_dict):passengers_infos_list = passenger_dict['data']['normal_passengers']passenger_list = []for passenger_info in passengers_infos_list:passenger_info_dict = {}passenger_info_dict['passenger_name'] = passenger_info.get('passenger_name', '')passenger_info_dict['passenger_gender'] = passenger_info.get('sex_name', '')passenger_info_dict['passenger_id_type_code'] = passenger_info.get('passenger_id_type_code', '')passenger_info_dict['passenger_id_no'] = passenger_info.get('passenger_id_no', '')passenger_info_dict['passenger_mobile_no'] = passenger_info.get('mobile_no', '')passenger_list.append(passenger_info_dict)return passenger_list
4. 获取乘客信息列表
# 12306.funk12306.Funk12306.buy_ticket# 解析并构造乘客信息列表passenger_list = parsePassenger(json.loads(response.content))print('获取乘客信息有:')pprint(passenger_list)passenger_info_dict = passenger_list[int(input('输入要购票的乘车人的下标'))]
5. 解析坐席类型
经过不断的抓包,尝试获取坐席类型的编码
# 12306.utils.parse_seat_typeseat_type_dict = {"erdengzuo": "O", # 二等座"yingwo": "3", # 硬卧"yingzuo": "1", # 硬座"wuzuo": "1", # 无座"ruanwo": "4", # 软卧"ruanzuo": "2", # 软座"dongwo": "F", # 动卧"yidengzuo": "M", # 一等座"gaojiruanwo": "6", # 高级软座"shangwuzuo": "9", # 商务座"tedengzuo": "P", # 特等座
}
6. 构造乘客信息
# 12306.funk12306.Funk12306.buy_ticket# 坐席类型try:seat_type = seat_type_dict[input('请输入要购买的坐席类型的拼音,如果输入错误,将强行购买无座,能回家就行了,还要tm什么自行车!:')]except:seat_type = seat_type_dict['wuzuo']# 构造乘客信息passengerTicketStr = '%s,0,1,%s,%s,%s,%s,N' % (seat_type, passenger_info_dict['passenger_name'],passenger_info_dict['passenger_id_type_code'],passenger_info_dict['passenger_id_no'],passenger_info_dict['passenger_mobile_no'])oldPassengerStr = '%s,%s,%s,1_' % (passenger_info_dict['passenger_name'],passenger_info_dict['passenger_id_type_code'],passenger_info_dict['passenger_id_no'])# 检查选票人信息url = 'https://kyfw.12306.cn/otn/confirmPassenger/checkOrderInfo'data = {'cancel_flag': '2', # 未知'bed_level_order_num': '000000000000000000000000000000', # 未知'passengerTicketStr': passengerTicketStr.encode('utf-8'), # O,0,1,靳文强,1,142303199512240614,18335456020,N'oldPassengerStr': oldPassengerStr.encode('utf-8'), # 靳文强,1,142303199512240614,1_'tour_flag': 'dc', # 单程'randCode': '','whatsSelect': '1','_json_att': '','REPEAT_SUBMIT_TOKEN': repeat_submit_token}resp = self.s.post(url, data=data)print(resp.text)
小结
- 了解 预定订单初始化
- 了解 解析构造用户信息
- 了解 解析构造坐席信息
【12306购票】预定订单初始化、解析用户信息以及坐席信息相关推荐
- 【爬虫实战】12306购票抓包分析以及任务分解
12306购票抓包分析以及任务分解 前言 1. 抓包分析 1.1 `https://www.12306.cn/index/` 1.2 `https://kyfw.12306.cn/otn/login/ ...
- 【12306购票】解析车站信息以及车辆信息
解析车站信息以及车辆信息 1. 解析城市/车站编码 2. 获取车辆信息 3. 解析车辆信息 4. 获取后续请求所需的参数 了解 解析车站信息 了解 解析车辆信息 1. 解析城市/车站编码 城市/车站编 ...
- 12306购票信息爬虫
12306购票信息爬虫 本文使用python3实现QQ邮箱爬虫和Email解析,会将设计思路和核心代码分享在此处,欢迎大家多多评论交流,感谢? 一.问题背景 二.预案探索 三.三个方案 1.直接抓包, ...
- 解析爬虫12306购票系统流程
做爬虫也将近有一年的时间,本人不是什么名牌大学毕业,但是对计算机的热爱无人能挡.大学学了Java语言,大四来到帝都实习找了一份Java偏数据的实习工作,工作的过程中第一次接触到了爬虫的工作,并且感觉爬 ...
- DOM 案例——(美团外卖下拉框菜单、半透明——信息滑入、模态窗口拖拽效果、放大镜效果、滚动条滑到一定位置的固定导航栏、12306购票网站多级联动、斗鱼TV无规则弹幕特效、百度搜索条动态输入下拉瀑布)
目录 1.缓动动画--美团外卖下拉框菜单 2.半透明--信息滑入 3.模态窗口拖拽效果 4.放大镜效果 5.滚动条滑到一定位置的固定导航栏 6.12306购票网站多级联动 7.斗鱼TV无规则弹幕特效 ...
- No5.由内存存储改为数据库存储和redis存储(主要是授权服务端的用户信息、客户端信息、客户授权信息;资源端是没有存储的,每次解析token拿到用户信息)
代码地址与接口看总目录:[学习笔记]记录冷冷-pig项目的学习过程,大概包括Authorization Server.springcloud.Mybatis Plus~~~_清晨敲代码的博客-CSDN ...
- Python爬虫学习笔记-第十二+十三课(selenium综合练习-12306购票)
selenium综合练习-实现12306购票 1. 练习初衷 2. selenium实现12306购票 2.1 类基本框架 2.2 网站登录 2.3 车次以及余票查询 2.4 解析车次列表 2.5 确 ...
- 12306购票抓包分析以及任务分解
12306购票抓包分析以及任务分解 学习目标: 了解 12306抓包过程 1.1 抓包分析 使用谷歌浏览器或fiddler等抓包工具完成登陆以及购票操作,进行抓包,根据 具有业务作用 或 被set-c ...
- python12306买票_Python-爬虫-12306购票业务实现
1 importrequests2 from requests importRequest,Session3 importrequests.cookies4 importurllib.parse as ...
最新文章
- Marathon 0.15: 更稳定 更多数据 更易用
- VMware将世界领先的云访问安全代理合作伙伴纳入移动安全联盟
- paddlepaddle安装
- linux apr文件解压失败,Linux安装apache服务器遇到的问题
- 安装python的第一个曲折
- SDNU 1029.巧分整数(斯特林数(改)dp)
- SpringBoot编写HelloWorld-new
- 关于Latent Dirichlet Allocation及Hierarchical LDA模型的必读文章和相关代码
- promise入门的准备工作-(尚硅谷教程笔记)
- c++游戏编程 源代码
- eclipse各版本对应JDK版本要求
- 中国IT排名百强公司 .
- oppo计算机锁屏快捷键,电脑如何快速锁屏
- 五子棋-单机游戏-微信小游戏项目开发入门
- 配置oem 13c以监控管理数据库
- 自媒体素材库有哪些?蚁小二带你找素材
- 按键精灵手机版 参数个数不匹配
- 蓝易云:linux怎么关闭防火墙详细教程
- 大雁塔尺寸_仅用一张A4纸和计算器针对西安大雁塔高度的测量
- SOAP在java中的应用实例