前言

有人想去武汉,重庆,成都玩的吗,我五一想去,但是奈何公司假期一直没有公布,具体假期耶不知道几天,结果今晚上知道了,然后马上点开我的12306,没票了…我直接裂开

也不是完全没票,需要候补,还是可以试着抢一抢,但是我的手拿抢的过脚本,还是得靠我的python

okok,话不多说 咱就直接开始吧

导入模块

import requests
import pandas as pd
import json

请求数据

找到数据来源

url = 'https:///otn/leftTicket/query'
data = {完整源码领取+v:xiaoyuanllsll'leftTicketDTO.train_date': train_date,'leftTicketDTO.from_station': city_json[from_station],'leftTicketDTO.to_station': city_json[to_station],'purpose_codes': 'ADULT',
}
headers = {'Cookie': '',# 'Host': 'kyfw.12306.cn',# 'Referer': 'https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc&fs=%E9%95%BF%E6%B2%99,CSQ&ts=%E5%B2%B3%E9%98%B3%E4%B8%9C,YIQ&date=2021-09-08&flag=N,N,Y','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(url=url, params=data, headers=headers)

自动识别编码

response.encoding = response.apparent_encoding

数据解析取值

    for index in result:# requests.utils.unquote(index)index_list = index.replace('有', 'Yes').replace('无', 'No').split('|')# print(index_list)train_number = index_list[3]  # 车次if 'G' in train_number:time_1 = index_list[8]  # 出发时间time_2 = index_list[9]  # 到达时间prince_seat = index_list[32]  # 特等座first_class_seat = index_list[31]  # 一等座second_class = index_list[30]  # 二等座dit = {'Num': train_number,'Start': time_1,'End': time_2,'Top': prince_seat,'First': prince_seat,'Second': second_class,'Yz': '-','Wz': '-','Rw': '-','Yw': '-',}else:time_1 = index_list[8]  # 出发时间time_2 = index_list[9]  # 到达时间hard_seat = index_list[29]  # 硬座no_seat = index_list[26]  # 无座soft_sleeper = index_list[23]  # 软卧hard_sleeper = index_list[28]  # 硬卧dit = {'Num': train_number,'Start': time_1,'End': time_2,'Top': '-','First': '-','Second': '-','Yz': hard_seat,'Wz': no_seat,'Rw': soft_sleeper,'Yw': hard_sleeper,}lis.append(dit)content = pd.DataFrame(lis)print(content)

实现查询一座城市车次数据

实现全国车次查询

f = open('city.json', mode='r', encoding='utf-8')
text = f.read()
city_json = json.loads(text)
while True:from_station = input('请输入你出发的城市: ')to_station = input('请输入你达到的城市: ')train_date = input('请输入乘车时间(2023-04-023/年-月-日):')

再次查询/退出

again = input('是否继续查询(Y/N): ')
if again == 'Y' or again == 'y':continue
else:break

完整代码

import requests
import pandas as pd完整源码领取+v:xiaoyuanllsllimport jsonf = open('city.json', mode='r', encoding='utf-8')
text = f.read()
city_json = json.loads(text)
while True:from_station = input('请输入你出发的城市: ')to_station = input('请输入你达到的城市: ')train_date = input('请输入乘车时间(2023-04-23/年-月-日):')url = 'https://kyfw.12306.cn/otn/leftTicket/query'data = {'leftTicketDTO.train_date': train_date,'leftTicketDTO.from_station': city_json[from_station],'leftTicketDTO.to_station': city_json[to_station],'purpose_codes': 'ADULT',}headers = {'Cookie': '',# 'Host': 'kyfw.12306.cn',# 'Referer': 'https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc&fs=%E9%95%BF%E6%B2%99,CSQ&ts=%E5%B2%B3%E9%98%B3%E4%B8%9C,YIQ&date=2021-09-08&flag=N,N,Y','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}response = requests.get(url=url, params=data, headers=headers)response.encoding = response.apparent_encodingresult = response.json()['data']['result']lis = []for index in result:# requests.utils.unquote(index)index_list = index.replace('有', 'Yes').replace('无', 'No').split('|')# print(index_list)train_number = index_list[3]  # 车次if 'G' in train_number:time_1 = index_list[8]  # 出发时间time_2 = index_list[9]  # 到达时间prince_seat = index_list[32]  # 特等座first_class_seat = index_list[31]  # 一等座second_class = index_list[30]  # 二等座dit = {'Num': train_number,'Start': time_1,'End': time_2,'Top': prince_seat,'First': prince_seat,'Second': second_class,'Yz': '-','Wz': '-','Rw': '-','Yw': '-',}else:time_1 = index_list[8]  # 出发时间time_2 = index_list[9]  # 到达时间hard_seat = index_list[29]  # 硬座no_seat = index_list[26]  # 无座soft_sleeper = index_list[23]  # 软卧hard_sleeper = index_list[28]  # 硬卧dit = {'Num': train_number,'Start': time_1,'End': time_2,'Top': '-','First': '-','Second': '-','Yz': hard_seat,'Wz': no_seat,'Rw': soft_sleeper,'Yw': hard_sleeper,}lis.append(dit)pd.set_option('display.max_rows', None)content = pd.DataFrame(lis)print(content)again = input('是否继续查询(Y/N): ')if again == 'Y' or again == 'y':continueelse:break

抢票代码

点击文末名片领取~

最后

很多小伙伴在学习python的时候总会遇到一些问题和瓶颈,没有方向感,不知道该从哪里入手去提升,所以我准备了一些资料,都可以分享大家的

请看下方文字~

五一回家没票?给你分享这个用Python制作出来的查票抢票脚本相关推荐

  1. Python制作【大麦网】抢票程序,看演唱会再也不怕没票了

    前言 大麦网,是中国综合类现场娱乐票务营销平台,业务覆盖演唱会. 话剧.音乐剧.体育赛事等领域. 但是因为票数有限,还有黄牛们不能丢了饭碗,所以导致了,很多人都抢不到票 那么,今天带大家用Python ...

  2. 还没买到票?快试试这个Python开源工具,支持多任务抢票

    栗子 发自 凹非寺  量子位 报道 | 公众号 QbitAI 据统计,量子位有超过50%的员工,目前为止没抢到票. 买了加速包,好久也没动静. 能依靠的只有勤劳的双手,但每天收到的都是12306送来的 ...

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

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

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

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

  5. Python selenium 实现大麦网自动抢票,简单的实现全购票过程

    前言 大麦网是中国综合类现场娱乐票务营销平台,业务覆盖演唱会. 话剧.音乐剧.体育赛事等领域 今天,我们要用代码来实现他的购票过程 先来看看完成后的效果是怎么样的 开发环境 版 本:anaconda( ...

  6. 【python教程入门学习】自动抢票之 12306 登录篇

    逢年过节 12306 的票总是要靠抢,前几天小编就在抢周一去上海的票,实在是抢不到呀,就撸了一个自动抢票的脚本. 抢票的思路就是使用 selenium 模拟用户登录 12306 网站购票行为,登录后抓 ...

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

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

  8. 周杰伦演唱会门票还能这样抢?看过来!我用Python实现了大麦网自动抢票功能

    相信想去周董演唱会的大家都用过大麦网抢票吧? 可是-抢不到啊!!! 该说不说 我抢到了 那么,今天带大家用Python来制作一个自动抢票的脚本小程序! 知识点: 面向对象编程 selenium 操作浏 ...

  9. 接码平台源码_你的票被服务器上的爬虫“吃”了,本文解析爬虫抢票的源码!...

    过年啦!黄牛们又开始猖獗了,我们为什么总是抢不到票?实际上票都被黄牛们部署在云服务器上的脚本不断刷着!我们手再快能快过爬虫吗?成都七中chengqigou清华大学shu20200124888.8张铁柱 ...

最新文章

  1. 【matlab】面积图(area函数的应用)
  2. [NOTE] Web For Pentester靶场练习笔记
  3. 如何用MaskBlt实现两个位图的合并,从而实现背景透明
  4. 走在网页游戏开发的路上(十)
  5. php 面向对象 教程,PHP学习笔记之面向对象设计_PHP教程
  6. 假定某一个数据列表是一个班级的计算机课程,若需要利用形参直接访问实参,则应把形参变量说明为()参数。A.指针B.引用C.传值D.常值...
  7. LeetCode单链表题目测试代码(只需添加对应题目,本地即可debug)
  8. github 上传代码_leetcode爬虫:爬取代码;生成readme;上传github
  9. java 内存分配实例_java学习(四) —— 内存分配浅析
  10. python离散变量_python – 当涉及离散变量时,pymc3与pymc2的困难
  11. delphi让exe开机自启动
  12. EMNLP 2017 北京论文报告会笔记
  13. Axure Rp汉化安装
  14. android webview 透明背景,在android中的半透明webview背景
  15. android 中通过SimpleDateFormat自定义显示英文的时间格式
  16. 09款苹果笔记本图片_苹果2009-2012款Macbook Pro 13寸笔记本更换硬盘教程
  17. java 分词获取词性_jie分词之分词、词性分析、关键词抽取
  18. Thinkpad 笔记本 装win7 64 位操作系统热键驱动装不上问题解决!
  19. equest源码分析及其与==的区别
  20. 计算几何入门 1.4:凸包的构造——Jarvis March算法

热门文章

  1. XXL-Job 介绍
  2. Jenkins定时执行测试任务
  3. 什么是3D模型,什么是GLTF,又如何使用GLTF文件
  4. windows server 2016 活动目录部署系列(五)域控制器的备份和还原
  5. 硅谷砖石王老五 VS. 上海海龟单身汉的一天
  6. Linux下各种文件夹的作用
  7. Javaweb - Fruit
  8. 解决最近Win11更新导致任务栏不能透明方法(实测有效)
  9. 百度云进军智慧农业,ABC+IoT为农业匠人带来全新可能
  10. fidic的新绿皮书_FIDIC绿皮书中英文