五一抢票难,这个Python抢票脚本,你一定要试试

691022a972804f31b40a1b6f10d69127.gif

大家好,我是小F~

再过一周就要五一啦,大家是打算家里蹲or出去玩,又或者是在公司加班呢...

今天给大家介绍三个和12306抢票相关的项目。

/01/ py12306

9dd1ffa0fe3d8ad467d0925bf679b1e5.png

py12306购票助手,顾名思义,12306买票的~

需要在python 3.6以上版本运行程序。

1. 安装依赖
git clone https://github.com/pjialin/py12306
pip install -r requirements.txt

2. 配置程序
cp env.py.example env.py

3. 启动前测试
python main.py -t

4. 运行程序
python main.py

运行程序后,结果如下。

ca567f6185021a7d044d85791ffc4c73.png

还可以使用docker或docker-compose进行部署使用。

Docker 使用
1. 将配置文件下载到本地
docker run --rm pjialin/py12306 cat /config/env.py > env.py
# 或
curl https://raw.githubusercontent.com/pjialin/py12306/master/env.docker.py.example -o env.py

2. 修改好配置后运行
docker run --rm --name py12306 -p 8008:8008 -d -v $(pwd):/config -v py12306:/data pjialin/py12306


Docker-compose 中使用
1. 复制配置文件
cp docker-compose.yml.example docker-compose.yml

2. 从 docker-compose 运行, 在docker-compose.yml所在的目录使用命令
docker-compose up -d

Web管理页面,支持用户和任务以及实时日志查看。

833b3689ca151829805373a905b4949b.png

项目地址:https://github.com/pjialin/py12306

/02/ 12306spy

f2d5e2bc9a2d587835cce1cd4663d80b.png

12306spy,12306查票,找到一张能上车的票。

因为有时候买不到直达票,会选择中转换乘或者补票的方式,以此去你想去的地方~

输入【开始】和【结束】站点,以及【日期】,查询所有车次。

d113e88e6fa4565d78b5772676561187.png

点击右侧的【点击直达】 , 则能在这里的车次中找到可以上车的票

c989f0517785d7b0566e2f2f753e06a5.png

这个项目同样支持源码或docker部署使用。

66c6a0ba5b874e75ab36314e41d83d71.png

项目地址:https://github.com/elroy93/12306spy

/03/ RailTracker

RailTracker是一个不错的Python高铁票务数据分析练习项目,包含数据采集、清洗、可视化分析。

a9614675c7a75bbd64d5868ff1d6230e.png

744627593955ffd1242e7faa2425bed8.png

731bdbfe9f17f2a03aa33a3c30a3b448.png

下面是原作者对它做的一个介绍。

RailTracker是一个专门针对高铁票务数据的高效数据采集、集成与可视化系统,使用 Python开发。

致力于提供准确、实时更新的高铁票务数据,助力用户深入分析和洞察高铁票务的最新趋势。

主要使用到了如下技术工具。

907a6530ec0238b108f453243f463ee9.png

项目地址:

https://github.com/Zhu-Shatong/RailTracker

这三个项目还是非常实用的,也值得学习。

大家有兴趣或需求的,可以自行去研究使用~

项目都已上传,公众号后台回复:「12306」,即可获得。

万水千山总是情,点个 👍 行不行

推荐阅读

b0036e2c982dfaae46965268e79fda82.jpeg

5866d794be0e42d202ed188120696434.jpeg

0b85bd366cb5aa95a729d7ddcea5b0b2.jpeg

···  END  ···

93b9421fe6c4f092da044b592b5b43b1.jpeg

脚本是一种利用计算机程序自动查询和订购火车的工具。在Python中,可以使用第三方库如requests、selenium等来实现高铁脚本脚本的基本原理是通过发送HTTP请求模拟用户在火车网站上查询和提交订单的操作。 下面是一个简单的Python高铁脚本的示例: ```python import requests def search_tickets(date, from_station, to_station): # 构造查询参数 params = { 'leftTicketDTO.train_date': date, 'leftTicketDTO.from_station': from_station, 'leftTicketDTO.to_station': to_station, 'purpose_codes': 'ADULT' } # 发送查询请求 response = requests.get('https://kyfw.12306.cn/otn/leftTicket/queryZ', params=params) # 解析查询结果 result = response.json() # 处理查询结果 if result['status'] and result['httpstatus'] == 200: tickets = result['data']['result'] # 提取价、余数量等信息 # 进行自定义筛选和排序 # 返回符合条件的火车信息 else: print('查询失败') def book_ticket(date, from_station, to_station, train_no, seat_type): # 构造提交订单的数据 data = { 'secretStr': '', 'train_date': date, 'back_train_date': date, 'tour_flag': 'dc', 'purpose_codes': 'ADULT', 'query_from_station_name': from_station, 'query_to_station_name': to_station, 'undefined': '' } # 发送提交订单请求 response = requests.post('https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest', data=data) # 处理提交订单结果 if response.status_code == 200: # 解析返回的JSON数据 result = response.json() if result['status']: # 获取令牌 token = result['data']['token'] # 获取车次信息 train_info = result['data']['queryLeftTicketRequestDTO'] # 构造乘客信息 passengers = [ {'passenger_name': '张三', 'passenger_id_type_code': '1', 'passenger_id_no': '身份证号码', 'mobile_no': '手机号码'} # 可以添加更多乘客信息 ] # 提交订单 submit_order(token, train_info, passengers, seat_type) else: print('提交订单失败') else: print('提交订单请求失败') def submit_order(token, train_info, passengers, seat_type): # 构造确认订单的数据 data = { '_json_att': '', 'REPEAT_SUBMIT_TOKEN': token, 'purpose_codes': 'ADULT', 'passengerTicketStr': '', 'oldPassengerStr': '', 'randCode': '' } # 发送确认订单请求 response = requests.post('https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue', data=data) # 处理确认订单结果 if response.status_code == 200: # 解析返回的JSON数据 result = response.json() if result['status']: # 确认订单成功,获取订单号 order_no = result['data']['orderId'] # 提交订单支付 pay_order(order_no) else: print('确认订单失败') else: print('确认订单请求失败') def pay_order(order_no): # 构造支付订单的数据 data = { 'orderSequence_no': order_no } # 发送支付订单请求 response = requests.post('https://kyfw.12306.cn/otn//payOrder/init', data=data) # 处理支付订单结果 if response.status_code == 200: # 解析返回的HTML数据 # 提取支付链接或二维码等信息 else: print('支付订单请求失败') # 使用示例 search_tickets('2022-01-01', '北京', '上海') book_ticket('2022-01-01', '北京', '上海', 'G1234', '二等座') ``` 上述示例中的代码只是一个简单的框架,具体的实现需要根据实际情况进行调整和完善。另外,需要注意的是,使用高铁脚本有一定的法律和道德风险,请确保遵守相关法律法规和网站规定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值