基于Python3.6+splinter实现自动抢火车票

yizhihongxing

下面是详细讲解基于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 socket C/S结构的聊天室应用实现

    Python socket C/S结构的聊天室应用实现,可以分为以下几个步骤: 导入socket模块。 在Python编写socket网络程序时,需要使用socket库,因此需要在代码文件顶部导入socket模块。 import socket 创建服务器端。 服务器端需要调用socket()方法创建一个socket对象,并指定地址和端口号,接着使用bind(…

    python 2023年5月19日
    00
  • 一步步教你用python的scrapy编写一个爬虫

    下面是我为你提供的详细攻略: 一步步教你用python的Scrapy编写一个爬虫 Scrapy是Python的一个高效的爬虫框架,可以帮助我们快速、简单地构建爬虫程序。在本攻略中,我们介绍如何使用Scrapy编写一个简单的爬虫程序。 安装Scrapy 在开始编写爬虫之前,我们需要先安装Scrapy。在终端(命令行)中输入以下命令来安装Scrapy: pip …

    python 2023年5月14日
    00
  • Python简单生成随机姓名的方法示例

    下面就来详细讲解一下如何用Python生成随机姓名的方法。 生成姓氏 首先我们需要生成姓氏,通常我们可以使用已有的姓氏列表,很多基础库都可以提供这种列表。这里我们使用Python内置的random库来实现: import random # 姓氏列表 family_name_list = [‘赵’, ‘钱’, ‘孙’, ‘李’, ‘周’, ‘吴’, ‘郑’, …

    python 2023年5月20日
    00
  • Python初学者必备的文件读写指南

    Python初学者必备的文件读写指南 作为一名初学者,文件读写是最基础也是最常见的操作之一,但很多人可能并不清楚该如何读写文件,下面将为大家详细介绍Python中文件读写的操作。 文件的打开与关闭 在Python中打开一个文件需要用到内置函数open(),它的基本语法格式如下: open(file, mode=’r’, buffering=-1, encod…

    python 2023年5月13日
    00
  • tesseract-ocr使用以及训练方法

    Tesseract-OCR使用指南 Tesseract-OCR 是一款OCR字符识别工具,可用于将印刷或手写文字转换为文本或数字字符。本文旨在介绍 tesseract-ocr 的基本使用方法及训练方法。 安装 Tesseract-OCR Linux bashsudo apt-get install tesseract-ocr MacOS bashbrew i…

    python 2023年5月19日
    00
  • 在Python中分别打印列表中的每一个元素方法

    当我们需要遍历一个列表,打印出每一个元素时,可以使用以下两种方法: 方法一:使用for循环和索引(index) 使用for循环和索引是最基本的遍历列表的方法,我们可以通过循环打印出列表中的每个元素。如下所示的代码: list1 = [‘apple’, ‘banana’, ‘orange’] for i in range(len(list1)): print(…

    python 2023年6月5日
    00
  • 解决python运行效率不高的问题

    当我们使用Python编写程序的时候,我们可能会遇到运行效率不高的问题。这种情况经常出现在处理大量数据、执行复杂算法、使用循环等情况下。对于这种情况,以下是解决Python运行效率不高的攻略: 1.使用适当的数据结构 在Python中,使用适当的数据结构可以使程序运行速度更快。例如,列表(list)和字典(dict)是Python中最常用的数据结构。在处理大…

    python 2023年5月13日
    00
  • Python异步爬虫实现原理与知识总结

    Python异步爬虫实现原理与知识总结 异步爬虫是一种高效的爬虫方式,在处理大量请求并发的情况下,能够大幅提升爬虫的效率。本文将介绍Python异步爬虫的实现原理,并提供一些示例说明。 异步编程的基本概念 异步编程的核心是协程,协程本质上是一种轻量级的线程,其调度完全由程序自身控制。Python提供的协程实现方式是async/await关键字。 相比于传统的…

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