python抢票软件源代码_一百多行python代码实现抢票助手

2023-05-16

一百多行python代码实现抢票助手

来源:中文源码网    浏览: 次    日期:2019年11月5日

【下载文档:  一百多行python代码实现抢票助手.txt 】

(友情提示:右键点上行txt文档名->目标另存为)

一百多行python代码实现抢票助手一. 代码使用Python+Splinter开发,Splinter是一个使用Python开发的开源Web应用测试工具,它可以帮你实现自动浏览站点和与其进行交互。

二. 安装好Python 3或2都可以,然后安装Splinter `pip install Splinter

三. Splinter注意事项

1. Splinter的Browser类默认优先使用firefox,所以用chrome的话,需要指定driver_name="chrome",只要养成一个习惯,不管用什么浏览器都指定,问题会出得少

2. 当然,选择chrome的话,需要查看自己浏览器的版本,需要和chromedriver版本对应(不是版本号一致),参考和下载地址

四. Splinter.broser部分方法介绍

1. findbyid("控件id").first:根据id找到组件

2. visis(url):访问指定网址

3. fill("填充的内容"):用指定内容填充组件

4. click():点击事件

5. reload():重新加载当前文档五. 主要思路:

1. 自动填充用户名,密码,点击图片验证码(手动),自动点击购票查询,预订,自动选择指定乘客进入提交订单页面

2. 除登录时的图片验证码,全程自动

六. error(下面是我已经尝试成功的):

1. OSError: [WinError 193] %1 不是有效的 Win32 应用程序。

2. 解决方案:chromedriver版本和电脑浏览器版本映射没对应

3. ImportError: cannot import name 'Browser'。

4. 解决方案:是否安装了Splinter `pip install Splinter`,将代码文件和chromedriver放到一个新文件夹下,防止其他文件的影响

5. 请在运行文件前,将代码内的乘客,用户名,密码正确填写好,检查cookies是否正确七. cookies 查看

1. 进入chrome浏览器,按F12,选中NetWork选项,如下图

2. 起始地址:`_jc_save_fromStation` 购票时间:`_jc_save_fromDate` 目的地:`_jc_save_toStation`

八. 运行方法

1. python trainticket.py 天津 南昌 2018-02-10

2. OK

九. 具体代码如下

# -*- coding:utf-8 -*-

"""

@author Jianxiong Rao

"""

from splinter.browser import Browser

from time import sleep

import traceback

import time,sys

import os

class HuoChe(object):

"""docstring for Train"""

driver_name=''

executable_path=''

#用户名 密码

username = u"12306帐户名"

passwd = u"12306密码"

#cookies值自己找

# 天津%u5929%u6D25%2CTJP 南昌%u5357%u660C%2CNCG 桂林%u6842%u6797%2CGLZ

starts = u"%u5929%u6D25%2CTJP"

ends = u"%u5357%u660C%2CNCG"

#时间格式2018-02-05

dtime = u"2018-02-05"

#车次,选择第几趟,0则从上之下依次点击

order = 0

###乘客姓名

users=[u'乘客名']

##席位

xb=u"二等座"

pz=u"成人票"

"""网址"""

#12306查询URL

ticket_url = "http://kyfw.12306.cn/otn/leftTicket/init"

#12306登录URL

login_url = "http://kyfw.12306.cn/otn/login/init"

#我的12306URL

initmy_url = "http://kyfw.12306.cn/otn/index/initMy12306"

#购票URL

buy="http://kyfw.12306.cn/otn/confirmPassenger/initDc"

login_url='http://kyfw.12306.cn/otn/login/init'

def __init__(self):

self.driver_name = 'chrome'

self.executable_path = os.getcwd()+'/chromedriver'

print("Welcome To Use The Tool")

def login(self):

self.driver.visit(self.login_url)

#填充密码

self.driver.fill("loginUserDTO.user_name",self.username)

#sleep(1)

self.driver.fill("userDTO.password",self.passwd)

print("等待验证码,自行输入....")

while True:

if self.driver.url != self.initmy_url:

sleep(1)

else :

break

def start(self):

self.driver = Browser(driver_name=self.driver_name,executable_path = self.executable_path)

self.driver.driver.set_window_size(1400,1000)

self.login()

#sleep(1)

self.driver.visit(self.ticket_url)

try:

print("购票页面开始....")

#sleep(1)

#加载查询信息

self.driver.cookies.add({"_jc_save_fromStation":self.starts})

self.driver.cookies.add({"_jc_save_toStation":self.ends})

self.driver.cookies.add({"_jc_save_fromDate":self.dtime})

self.driver.reload()

count = 0

if self.order != 0:

while self.driver.url == self.ticket_url:

self.driver.find_bytext(u"查询").click()

count += 1

print("循环点击查询.... 第 %s 次"%count)

#sleep(1)

try:

self.driver.find_by_text(u'预订')[self.order - 1].click()

except Exception as e:

print(e)

print("还没开始预订")

continue

else :

while self.driver.url == self.ticket_url:

self.driver.find_by_text(u"查询").click()

count += 1

print("循环点击查询.... 第 %s 次"%count)

#sleep(0.8)

try:

for i in self.driver.find_by_text(u"预订"):

i.click()

sleep(1)

except Exception as e:

print(e)

print("还没开始预订 %s "%count)

continue

print("开始预订....")

#sleep(1)

#self.driver.reload()

sleep(1)

print("开始选择用户....")

for user in self.users:

self.driver.find_by_text(user).last.click()

print("提交订单....")

sleep(1)

# self.driver.find_by_text(self.pz).click()

# self.driver.find_by_id('').select(self.pz)

# sleep(1)

# self.driver.find_by_text(self.xb).click()

# sleep(1)

self.driver.find_by_id('submitOrder_id').click()

print("开始选座...")

# self.driver.find_by_id('1D').last.click()

# self.driver.find_by_id('1F').last.click()

sleep(1.5)

print("确认选座....")

self.driver.find_by_text('qr_submit_id').click()

except Exception as e:

print(e)

cities={

'天津':'%u5929%u6D25%2CTJP',

'南昌':'%u5357%u660C%2CNCG',

'桂林':'%u6842%u6797%2CGLZ'

}

if __name__=="__main__":

train = HuoChe()

train.starts = cities[sys.argv[1]]

train.ends = cities[sys.argv[2]]

train.dtime = sys.argv[3]

train.start()

十. 源码地址

12306Ticket

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持中文源码网。

亲,试试微信扫码分享本页! *^_^*

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python抢票软件源代码_一百多行python代码实现抢票助手 的相关文章

  • IdentityServer4 配置负载均衡

    如果使用 IdentityServer4 做授权服务的负载均衡 xff0c 默认情况下是不可以的 xff0c 比如有两个授权服务站点 xff0c 一个资源服务绑定其中一个授权服务 xff08 Authority配置 xff09 xff0c
  • android 打开串口log,user版本如何打开uart,让android log从串口kernel log输出

    数据流控制是否正确 xff0c 一般需关闭 xff0c 下面为RS232的三种流控制模式介绍 xff1a DTR DSR xff1a 硬件上要有对应接口 xff0c 软件上实现对应协议 xff0c 才能实现此流控制 具体实现起来 xff0c
  • 安装flashplugin提示依赖libgdk-pixbuf2.0-0

    为什么80 的码农都做不了架构师 xff1f gt gt gt 今天安装flashplugin 出现问题 xff0c sudo apt get install adobe flashplugin 结果提示 xff1a 下列软件包有未满足的依
  • Python新手入门教程,从环境准备到掌握基本编程

    Lesson 1 准备好学习Python的环境 下载的地址是 xff1a www python org 为了咱们的便当 xff0c 我在校内作了copy xff1a http 10 1 204 2 tool compiler amp IDE
  • mariadb使用C语言编程,MHA实现mariadb的高可用的详细步骤及配置参数详解

    MHA实现mariadb的高可用的详细步骤及配置参数详解 A 实验环境说明 a 4台centos7主机 b 角色说明 xff1a a MHA xff1a 192 168 36 35 b Master mariadb xff1a 192 16
  • c语言中sizeof函数的作用是,c语言中sizeof函数的用法

    C语言sizeof函数如何使用 xff1f 怎样利用sizeofCSS布局HTML小编今天和大家分享各种数据类型占用的字节数 xff1f 1 sizeof不是函数 xff0c 它只是一个操作符 operator 2 sizeof的作用是返回
  • AutoCAD快捷键大全

    送给学习AutoCAD的朋友 xff0c 最后一张图片是可以打印的键盘标签 xff0c 可以打印出来贴在键盘上方便记住 xff01 如果感觉模糊的话 xff0c 可以单击文章图片进行查看 xff01
  • 如何恢复U盘里的删除文件?

    对于经常使用到U盘的用户来说 xff0c 误删U盘内重要数据的情况经常发生 xff0c U盘内重要的资料从电脑上被删除后 xff0c 不经过回收站 xff0c 我们很难从回收站中还原数据 那么 xff0c 如何恢复u盘删除文件 xff1f
  • maven maven.compiler.source和maven.compiler.target的坑

    最近建议产品组把jdk 1 7升级到1 8 xff0c 昨晚开发报了个问题过来 xff0c 说maven compiler source和maven compiler target改成1 8之后 xff0c 编译出来的代码还是1 7 xff
  • 1‘b0 什么意思

    在看datasheet 中有类似表达式如下 xff1a 3 39 b000 1 39 b1 1 39 b0 3 39 b000这个表示 xff1a b代表二進制 3代表位元數 1 39 b1 xff1a 宣告為一位元二進制之值為1 xff0
  • css 识别软件测出来的尺寸和代码设置的不一样

    这是我在模仿网页时遇到的问题 xff0c 困扰了一会儿 xff0c 情况是这样的 我下载了参考的网页html文件 xff0c 为了测量某个box的高度 xff0c 用了一款可以截图识别的软件 xff1a 量出来的box高度是30px xff
  • SpringBoot中注入ApplicationContext对象的三种方式

    在项目中 xff0c 我们可能需要手动获取spring中的bean对象 xff0c 这时就需要通过 ApplicationContext 去操作一波了 xff01 1 直接注入 xff08 Autowired xff09 span clas
  • vue中$attrs你会用吗?

    这篇文章的知识点是父子组件通讯 xff0c 如果你了解 props 但是还没了解过 attrs xff0c 那么建议你花1分钟时间阅读 xff0c 了解它的优点 xff0c 并学会在项目中使用 关于 attrs的介绍 包含了父作用域中不作为
  • 企业微信三方应用开发(二)授权开通及登录流程

    何谓企业微信第三方应用 一句话简介 一个S商场 企业微信 里入驻了D商站 xff08 服务商 xff09 在卖他的C产品 xff08 三方应用 xff09 三句话路径 我们申请成为企业微信服务商 xff0c 入驻到企业微信 然后经过 应用开
  • PHP+AJAX实现账号注册和登陆,附可用demo

    前言 登陆和注册已经是网站的标配了 xff0c 所以这是我们web开发学习过程中必学的了 其实很容易实现 xff0c 只需要懂数据库的增删改查 xff0c 还有if else的条件语句即可做出来 目录 css Login Reg css s
  • ftp服务器无法使用浏览器访问解决方法

    浏览器默认工作在被动模式 可能你的环境无法让ftp服务器工作在主动模式 这个很容易测试 你在IE浏览器的工具 internet选项 高级中取消使用被动ftp的设置 xff0c 看看浏览器是否还可以访问ftp服务器 xff0c 如果访问不了
  • Python抓取糗事百科成人版图片

    最近开始学习爬虫 xff0c 一开始看的是静觅 的爬虫系列文章 xff0c 今天看到糗事百科成人版 xff0c 心里就邪恶了一下 xff0c 把图片都爬下来吧 xff0c 哈哈 虽然后来实现了 xff0c 但还是存在一些问题 xff0c 暂
  • vc中调用Com组件的方法详解

    Requirement 1 创建myCom dll 该COM只有一个组件 两个接口IGetRes 方法Hello IGetResEx 方法HelloEx xff1b 2 在工程中导入组件或类型库 import 34 组件所在目录myCom
  • matlab练习程序(二值图像内外边界跟踪)

    目标内边界的像素全都在目标里面 xff0c 目标外边界的像素全都不在目标上 xff0c 是包围着目标的 二值图像内外边界的计算都是有两种方法的 xff0c 所以一共是4种算法 xff0c 不过实际用到跟踪的只有一个而已 首先是内边界跟踪 x
  • 如何使用.NET开发全版本支持的Outlook插件产品(三)——全面控制

    插件项目所有代码都已经上传至 https github com VanPan TestOutlookAdding 进阶基础 COM查看 首先 xff0c 对于Outlook对象模型 xff0c MSDN早就有非常详细的介绍 xff0c 请直

随机推荐

  • Android中应用程序如何获得系统签名权限

    最近在做一个控制电视界面的应用 xff0c 模拟电视遥控器操作 xff0c 代码如下 public static void simulateKeystroke final int KeyCode new Thread new Runnabl
  • 使用PostSharp在.NET平台上实现AOP

    摘要 本文首先介绍AOP xff08 面向方面编程 xff09 的相关概念及理论 xff0c 然后介绍如何使用PostSharp框架在 NET平台上实现AOP xff0c 最后对PostSharp的机制及AOP的优劣进行一个简单的分析 AO
  • python 带头节点的单链表相关函数

    链表用头结点还是头指针让我混乱 在写append函数时 xff0c 发现网上的写法各有不同 xff0c 而带头结点的会更好理解 xff0c 也更简洁 以下是带头结点的单链表一些简单的相关函数 span class token keyword
  • 使用 Beautiful Soup 解析网页内容

    安装Beautiful Soup Beautiful Soup是一个Python的HTML解析框架 xff0c 我们可以利用它方便的处理HTML和XML文档 Beautiful Soup有3和4两个版本 xff0c 目前3已经停止开发 所以
  • ibm服务器报警指示灯含意

    EVENT LOG指示灯报警 有台IBM服务器前面的光通路面板开始亮起了小黄灯 xff0c 推出这个小盒子一看 xff0c 是EVENT LOG指示灯报警 一时不知道是什么原因 xff0c 可能是日志错误 xff0c 要进Configura
  • [概念学习] Virtualization的几个概念

    1 Vitualization xff1a 某种东西的虚拟版本 xff0c 比如硬件平台 操作系统 存储设备 网络资源等 the creation of a virtual version of something such as a ha
  • Windows2012、windows2016配置多用户登录

    windows系统多用户登录配置方法如下 xff0c 但是120天后还是会提示缺少远程桌面授权服务器 xff0c 根本解决办法 xff0c 请参考 xff1a https blog 51cto com 13777088 2299170 服务
  • 全自动迁移数据库的实现 (Fluent NHibernate, Entity Framework Core)

    在开发涉及到数据库的程序时 xff0c 常会遇到一开始设计的结构不能满足需求需要再添加新字段或新表的情况 xff0c 这时就需要进行数据库迁移 实现数据库迁移有很多种办法 xff0c 从手动管理各个版本的ddl脚本 xff0c 到实现自己的
  • VM virtuaBox异常关机启动不了的解决方案

    事件回放 我的物理机是win7 xff0c 上面装了一个 VM virtualBox 用来装 Centos xff0c 有天物理机非正常关闭 xff0c 导致 VM virtuaBox异常关机启动不 了 xff0c 如下 确实找不到这个vm
  • SpringMVC系列(十一)把后台返回的数据转换成json、文件下载、文件上传

    一 后台返回的数据转换成json 1 引入转换json需要的3个依赖 1 lt json转换需要的依赖 begin gt 2 lt dependency gt 3 lt groupId gt com fasterxml jackson co
  • html 复选框checkbox

    阅读目录 统计选中复选框的个数点击复选框 xff0c 执行相应的函数复选框的状态层次关系 xff0c 选中父节点 xff0c 子节点全部选中 回到顶部 统计选中复选框的个数 lt html gt lt head gt lt title gt
  • android kk界面旋转流程_Android屏幕旋转前180度旋转以正确定向

    由于硬件问题 xff0c 我们必须将我们开发的Android平板电脑上下180度安装 我们设法翻转屏幕回来做以下修改 xff0c 以正确的方向 xff1a Android屏幕旋转前180度旋转以正确定向 框架 基 服务 SurfaceFli
  • 理解 简单的递归实现阶乘过程中的参数传递

    span class token keyword def span span class token function factorial span span class token punctuation span n span clas
  • 程序员工作中的一些建议

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 尽早地添加日志记录和错误处理 在开发新系统时 xff0c 我做的第一件事就是添加日志和错误处理 xff0c 因为这两者从一开始就非常有用 如果系统不能照常工作 xff0
  • MongoDB简单介绍以及基本命令

    一 MongoDB简介 1 MongoDB是什么 MongoDB 是一个基于分布式文件存储的数据库 由 C 43 43 语言编写 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 MongoDB 是一个介于关系数据库和非关系数据库之间
  • MariaDB 10.0.X中,动态列支持 JSON 格式来获取数据

    MariaDB 10 0 X中 xff0c 动态列 xff08 Dynamic Columns xff09 xff0c 可以支持 JSON 格式来获取数据 为了兼容传统SQL语法 xff0c MariaDB 10和MySQL5 7支持原生J
  • Linux系统之TroubleShooting

    尽管Linux系统非常强大 xff0c 稳定 xff0c 但是我们在使用过程当中 xff0c 如果人为操作不当 xff0c 仍然会影响系统 xff0c 甚至可能使得系统无法开机 xff0c 无法运行服务等等各种问题 那么这篇博文就总结一下一
  • k8s容器内的东西复制出来_如何把文件放进Docker或Kubernetes中,如何拷贝出来

    1 前言 在有些场景 xff0c 我们需要把外部的文件放到Docker容器中 xff0c 或者Kubernetes的Pod中去 xff0c 让应用去读取数据 2 Docker 1 从宿主复制文件到Docker容器 xff1a docker
  • ps怎么加底部阴影_PS给物体底部加阴影

    因为要再花瓶的底部加上阴影 xff0c 所以花瓶必须背景是透明 xff0c 这样就要先把花瓶扣出来 xff0c 底部新建一个图层 xff0c 添加阴影 1 用通道抠图 xff0c 把整个花瓶给抠出来 复制蓝色通道 xff0c ctrl 43
  • python抢票软件源代码_一百多行python代码实现抢票助手

    一百多行python代码实现抢票助手 来源 xff1a 中文源码网 浏览 xff1a 次 日期 xff1a 2019年11月5日 下载文档 一百多行python代码实现抢票助手 txt 友情提示 右键点上行txt文档名 gt 目标另存为 一