下面是详细讲解基于Python3.6+splinter实现自动抢火车票的完整攻略。
下面是详细讲解基于Python3.6+splinter实现自动抢火车票的完整攻略。
1. 前置要求
在开始实现前,需要先安装好以下工具:
- Python3.6及以上版本
- splinter包
- Chrome浏览器
2. 实现步骤
2.1 安装splinter
安装splinter需要使用pip进行安装,具体的安装方法如下:
pip install splinter
2.2 设置Chrome浏览器
由于使用splinter实现自动抢票需要使用Chrome浏览器,所以需要下载Chrome浏览器并设置ChromeDriver。ChromeDriver是连接Python和Chrome浏览器的桥梁。
下载地址:ChromeDriver下载
安装ChromeDriver的过程:
- 下载ChromeDriver
- 将ChromeDriver解压到一个目录中,例如解压到C:/Program Files目录中。
- 添加ChromeDriver到系统环境变量中,在系统环境变量的Path中添加ChromeDriver的路径,例如添加C:/Program Files/chromedriver。
2.3 编写Python程序
代码如下:
from splinter.browser import Browser
browser = Browser('chrome') # 打开Chrome浏览器
browser.visit('https://kyfw.12306.cn/otn/leftTicket/init') # visit到12306官网的余票查询页面
browser.find_by_text(u'登录').click() # 点击登录按钮
# 登录操作略
# ...
browser.visit('https://kyfw.12306.cn/otn/leftTicket/init') # 再次visit到余票查询页面
browser.cookies.add({'_jc_save_fromStation': '北京', '_jc_save_toStation': '上海'}) # 添加出发站和到达站的cookie
browser.reload() # 刷新页面
while True:
# 自动判断是否有票,有则进行下一步操作
flag = browser.find_by_text(u'预订')
if flag:
flag.click()
break
else:
browser.reload()
continue
browser.find_by_text(u'成人票').click() # 选择成人票
browser.find_by_id('normal_passenger_id').click() # 选择常用旅客
browser.find_by_text(u'提交订单').click() # 提交订单
2.4 运行程序
在运行Python程序前,需要先登录12306账号,登录成功后再运行程序。运行程序的命令如下:
python code.py
3. 示例说明
3.1 示例1
假设从北京到上海需要抢一张票,代码如下:
from splinter.browser import Browser
browser = Browser('chrome')
browser.visit('https://kyfw.12306.cn/otn/leftTicket/init')
browser.find_by_text(u'登录').click()
# 登录操作略
# ...
browser.visit('https://kyfw.12306.cn/otn/leftTicket/init')
browser.cookies.add({'_jc_save_fromStation': '北京', '_jc_save_toStation': '上海'})
browser.reload()
while True:
flag = browser.find_by_text(u'预订')
if flag:
flag.click()
break
else:
browser.reload()
continue
browser.find_by_text(u'成人票').click()
browser.find_by_id('normal_passenger_id').click()
browser.find_by_text(u'提交订单').click()
3.2 示例2
假设从北京到上海需要抢3张票,代码如下:
from splinter.browser import Browser
browser = Browser('chrome')
browser.visit('https://kyfw.12306.cn/otn/leftTicket/init')
browser.find_by_text(u'登录').click()
# 登录操作略
# ...
browser.visit('https://kyfw.12306.cn/otn/leftTicket/init')
browser.cookies.add({'_jc_save_fromStation': '北京', '_jc_save_toStation': '上海'})
browser.reload()
ticket_count = 0
while ticket_count < 3:
flag = browser.find_by_text(u'预订')
if flag:
flag.click()
ticket_count += 1
continue
else:
browser.reload()
continue
browser.find_by_text(u'成人票').click()
browser.find_by_id('normal_passenger_id').click()
browser.find_by_text(u'提交订单').click()
沃梦达教程
本文标题为:基于Python3.6+splinter实现自动抢火车票


基础教程推荐
猜你喜欢
- 基于Python实现自动扫雷详解 2023-12-13
- Python实现在图像中隐藏二维码的方法详解 2022-10-20
- 在Windows的Emacs中运行Python 2023-11-12
- 【python测试开发栈】python内存管理机制(一)—引用计数 2023-11-12
- 为什么我可以在Python中访问看似任意的内存地址? 2023-11-11
- python匹配linux通配符 2023-09-03
- Python和FreeBSD:即使在不同的进程中,threading.currentThread().ident也返回相同的值 2023-11-15
- xshell和python环境安装 2023-11-11
- python – 无法在Amazon Linux上安装gcloud:语法无效 2023-11-15
- 使用 OpenCV-Python 识别答题卡判卷功能 2023-08-08