基于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日

相关文章

  • 这可能是最好玩的python GUI入门实例(推荐)

    下面是“这可能是最好玩的Python GUI入门实例(推荐)”的详细攻略。 简介 Python有许多GUI工具包可以使用,其中最常用的是Tkinter。本文将介绍一个有趣的Tkinter应用程序——“像素画板”,这是学习Python中GUI编程的绝佳入门示例。 准备 安装Tkinter:在Windows上,Tkinter通常是默认安装的。在Linux上,您需…

    python 2023年5月31日
    00
  • EM算法的python实现的方法步骤

    以下是关于“EM算法的Python实现的方法步骤”的完整攻略: 简介 EM算法是一种常用的统计学习算法,用于估计含有隐变量的概率模型参数。在本教程中,我们将介绍如何使用Python实现EM算法,并提供两个示例。 方法步骤 EM算法的Python实现方法步骤如下: 初始化模型参数,包括隐变量的初始值和模型参数的初始值。 E步骤:根据当前模型参数和观测数据,计算…

    python 2023年5月14日
    00
  • 如何使用 Python Redis 库实现 Redis 集群?

    以下是详细讲解如何使用 Python Redis 库实现 Redis 集群的完整使用攻略。 Python Redis 库简介 Python Redis 库是 Redis 的官方 Python 客户端,提了对 Redis 数据库的完整支持。Python Redis可以用于连接 Redis 单节点、Redis 集群、Redis Sentinel 等多种 Redi…

    python 2023年5月12日
    00
  • Python中类似于jquery的pyquery库用法分析

    Python中类似于jQuery的pyquery库用法分析 在Python中,我们可以使用pyquery库来解析HTML和XML文档,类似于jQuery库在JavaScript中的作用。本文将详细介绍pyquery库的用法,并提供两个示例。 安装pyquery库 在开始之前,我们需要先安装pyquery库。可以使用pip命令来安装: pip install …

    python 2023年5月15日
    00
  • python re模块和正则表达式

    Python re模块和正则表达式 正则表达式是一种强大的工具,可以用于匹配、查找和替换文本中的模式。Python中re模块供了正则表达式的支持,本攻略将详细讲解Python中的re模块和正则表达式的基本用法、常用符号和示例应用。 基本用法 Python中使用re模块提供的函数来操作正则表达式。模块提供了常用函数: re.search(pattern, st…

    python 2023年5月14日
    00
  • Python内置函数及功能简介汇总

    查看Python内置函数及功能简介汇总可以帮助程序员更深入地了解Python的基础知识,并快速掌握常用的内置函数和方法。以下是具体的攻略: 1. 什么是Python内置函数 Python内置函数是Python解释器预定义的一组函数名称,用于不需要导入模块的情况下使用。这些内置函数有很多种用途,例如字符串、数字、列表等常见数据类型的操作和控制流程的语句等等。 …

    python 2023年5月13日
    00
  • Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)

    标题:Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率) 介绍:本文将介绍使用Python和Selenium库破解GEETEST滑块验证码的方法。通过模拟人类滑动的方式,实现95%以上的高通过率。 步骤:一、准备工作1. 安装Python3;2. 安装Selenium库和Chrome浏览器驱动;3. 安装Pillow库和Nu…

    python 2023年6月6日
    00
  • python json 递归打印所有json子节点信息的例子

    Python中的json模块提供了一种方便、快捷处理JSON数据的方法。在处理嵌套的JSON数据时,我们通常需要使用递归的方式遍历JSON数据中的每个子节点,并打印出子节点的信息。接下来,我将详细讲解如何使用Python和json模块递归打印所有JSON子节点信息的例子。 步骤一:读取JSON数据 首先,我们需要读取一个JSON格式的文件,并将其解析为Pyt…

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