基于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的过程:

  1. 下载ChromeDriver
  2. 将ChromeDriver解压到一个目录中,例如解压到C:/Program Files目录中。
  3. 添加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技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • 图像梯度

    图像梯度图像梯度计算的是图像变化的速度 对于图像的边缘部分,其灰度值变化较大,梯度值也较大相反,对于图像中比较平滑的部分,其灰度值变化较小,相应的梯度值也较小。图像梯度计算需要求导数,但是图像梯度一般通过计算像素值的差来得到梯度的近似值(近似导数值)。(差分,离散) Sobel算子 1 #Sobel算法 2 #dst = cv2.sobel(src,dept…

    python 2023年4月22日
    00
  • python利用os模块编写文件复制功能——copy()函数用法

    下面是Python利用os模块编写文件复制功能的攻略: 1. os模块简介 os模块是Python标准库中用于与操作系统交互的模块,提供了许多操作文件、目录等常见任务的函数。 2. 利用os模块复制文件 Python提供了shutil模块和os模块的copy()函数,可以用于文件的复制。 2.1 shutil模块 shutil模块是Python标准库中用于文…

    python 2023年6月2日
    00
  • python实操练习案例(一)

    “Python实操练习案例(一)”是一篇Python编程实战案例文章,文章主要是为Python初学者提供一些实际编程练习的案例,通过这些案例,可以帮助初学者更好地巩固所学的知识,并且提高编程水平。 文章的具体内容如下: 标题 Python实操练习案例(一) 简述 本文为Python编程初学者提供一些实际案例,可用于巩固所学的基础知识,并提高编程水平。 案例一…

    python 2023年5月19日
    00
  • Python海象运算符超详细讲解

    Python海象运算符超详细讲解 什么是海象运算符? Python 3.8新增了一个新的运算符:=,被称为海象运算符(英文为Walrus Operator)。这个运算符的作用是简化代码中变量赋值和表达式计算的过程。 如何使用海象运算符? 在基本的使用中,可以把海象运算符看作是一种特殊的赋值运算符,它把表达式的值赋给变量,并返回该值。具体用法如下: varia…

    python 2023年6月5日
    00
  • Python3.4 tkinter,PIL图片转换

    下面是“Python3.4 tkinter, PIL图片转换”的完整攻略: 准备工作 在进行Python3.4 tkinter, PIL图片转换前,我们需要先进行一些准备工作。 安装Python3.4环境,可以从Python官网下载对应版本的安装包,并进行安装。 安装Pillow库,这是Python imaging library的分支,用于处理图像文件。在…

    python 2023年6月13日
    00
  • 浅谈Python 字符串格式化输出(format/printf)

    来详细讲解一下“浅谈Python 字符串格式化输出(format/printf)”。 什么是字符串格式化输出? 在Python中,数字和字符串在输出时经常需要被格式化,以便更易于阅读和使用。Python使用两种格式化输出的方法:format()方法和旧式的%操作符。 format()方法 format()方法使用大括号 {} 来表示待插入的参数,然后尾随一个…

    python 2023年6月5日
    00
  • python excel转换csv代码实例

    来讲一下Python将Excel转换为CSV文件的代码实例。 首先,我们需要安装两个Python库:pandas和openpyxl。这两个库分别用于读取Excel文件和将数据转换为CSV格式。 在安装完成后,在Python脚本中引用这两个库: import pandas as pd import openpyxl 接下来,我们用pandas读取Excel文件…

    python 2023年5月14日
    00
  • python快速查找算法应用实例

    下面是详细讲解“Python快速查找算法应用实例”的完整攻略。 快速查找算法 快速查找算法(Binary Search)是一种高效的查找算法,它的基本思想是将查找区间不断缩小,直到找到目标元素或者确定目标元素不存在。快速查找算法的时间复杂度为O(log n),比线性查找算法的时间复杂度O(n)更加高效。 Python实现快速查找算法 下面是一个Python实…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部