Python3.x:抢票
Python3.x:抢票
一个妹子叫我帮她买动车票,结果竟然没买到票;好吧,不好意思说买不到票,写个抢票程序来完成吧;
1,Chromediver安装:
因为需要chrome支持页面测试,所以需要安装chromedriver。安装过程很简单(实际上不需要安装),注意下版本,有些低版本是不支持高版本的chrome的。镜像链接:http://npm.taobao.org/mirrors/chromedriver。直接把chromedriver.exe扔在在C/windows/system32/文件夹下的,这样就不需要配置环境变量了。
注意:chromedriver要跟chrome匹配;
2,Splinter模块安装:
Splinter是一个自动化测试网络应用的Python库。有了Splinter,就可以将打开浏览器、输入URL、填写表单、点击按钮等全部操作自动化。
通过pip install splinter来安装。
3,自动抢票,就是把每个操作步骤用代码实现;代码如下:
#python3.x from splinter.browser import Browser
from time import sleep
# traceback模块被用来跟踪异常返回信息
import traceback
# 设定用户名、密码
username = u"用户名"
passwd = u"密码"
# 起始站点和乘车时间的cookies值要去找;
# 方法:先登录一下12306,输入地点日期什么的查询一下,然后在chrome浏览器中按F12,出现如下页面,在Application选项里找到相应的值。
# 表格中的cookie值:
#_jc_save_fromeStation的值为出发地
#_jc_save_toSatation的值为目的地
#_jc_save_fromDate 出发日期
#_jc_save_toDate返程日期
# 实例中用的是:福州 到 厦门北 2018-01-13
from_station = u"%u798F%u5DDE%2CFZS"
to_station = u"%u53A6%u95E8%u5317%2CXKS"
# 时间格式2018-01-25
from_date = u"2018-01-13"
# 车次,选择第几趟,0则从上之下依次点击
order = 0
# 设定乘客姓名
ticketer = u"乘客姓名"
# 设定网址
ticket_url = "https://kyfw.12306.cn/otn/leftTicket/init"
login_url = "https://kyfw.12306.cn/otn/login/init"
initmy_url = "https://kyfw.12306.cn/otn/index/initMy12306" # 登录网站
def login():
#点击当前页面的"登录"
bwr.find_by_text(u"登录").click()
sleep(3)
#fill填充搜索框的内容,username。name=loginUserDTO.user_name的元素。
bwr.fill("loginUserDTO.user_name", username)
sleep(1)
bwr.fill("userDTO.password", passwd)
sleep(1)
print(u"等待验证码,自行输入...")
#登录手动输入验证码,并登录系统
while True:
#判断当前的url是否已经进入系统
if bwr.url != initmy_url:
sleep(1)
else:
break
# 购票
def getTickt():
global bwr
# 使用splinter打开chrome浏览器
bwr=Browser(driver_name="chrome")
# splinter打开浏览器(返回购票页面)
bwr.visit(ticket_url)
while bwr.is_text_present(u"登录"):
sleep(1)
login()
#判断是否已经进入系统
if bwr.url == initmy_url:
break
try:
print(u"购票页面...")
# splinter打开浏览器(跳回购票页面)
bwr.visit(ticket_url)
# 加载查询信息
bwr.cookies.add({"_jc_save_fromStation": from_station})
bwr.cookies.add({"_jc_save_toStation": to_station})
bwr.cookies.add({"_jc_save_fromDate": from_date})
bwr.reload()
sleep(2)
count=0
# 循环点击预订
if order != 0:
while bwr.url == ticket_url:
bwr.find_by_text(u"查询").click()
count += 1
print(u"循环点击查询... 第 %s 次" % count)
sleep(1)
try:
bwr.find_by_text(u"预订")[order - 1].click()
except:
print(u"还没开始预订")
continue
else:
while bwr.url == ticket_url:
bwr.find_by_text(u"查询").click()
count += 1
print(u"循环点击查询... 第 %s 次" % count)
sleep(1)
try:
for i in bwr.find_by_text(u"预订"):
i.click()
sleep(1)
except:
print(u"还没开始预订")
continue
sleep(1)
# 可以通过修改sleep的参数来调整延时, 但延时不要太低, 防止被12306网站认为是刷票屏蔽掉.
bwr.find_by_text(ticketer)[0].click()
sleep(1)
bwr.find_by_text(u"提交订单").click()
sleep(1)
#bwr.find_by_id(u"qr_submit_id").click()
print(u"成功抢到一张宝贵的票")
except Exception as e:
print(traceback.print_exc()) if __name__ == "__main__":
getTickt()
作者:整合侠
链接:http://www.cnblogs.com/lizm166/p/8191305.html
来源:博客园
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Python3.x:抢票的更多相关文章
- python3.7之12306抢票脚本实现
悲催的12306,彻底沦为各路抢票软件的服务提供方.元旦伊始,纯粹12306官网及APP抢票,愈一周的时间,仅到手一张凌晨3:55回家的站票.为远离脑残,无奈选择抢票软件,预购年后返沪车票.BTW,研 ...
- 简单的Python 火车抢票程序
当你想查询一下火车票信息的时候,你还在上12306官网吗?或是打开你手机里的APP?下面让我们来用Python写一个命令行版的火车票查看器, 只要在命令行敲一行命令就能获得你想要的火车票信息!如果你刚 ...
- 春运到了,带你用python来抢票回家!
不知不觉,一年一度的春运抢票大幕已经拉开,想快速抢到回家的车票吗?作为程序员,这些技术手段,你一定要知道. 为了让大家更快捷更便利的抢火车票,各种各样的抢票软件应需而生,这类软件大部分都是付费抢票的机 ...
- 实测两款 GitHub 开源抢票插件,所有坑都帮你踩过了
如果你对自己手速和市面上的各种 “加速包” 都没什么信心的话,不妨试试用程序员的手段抢票? 况且,[12306 官方宣布屏蔽了一大批付费抢票软件],这也意味着你即使给这些软件付了会员费,也依旧抢不到票 ...
- python写12306抢票
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' 利用splinter写的一个手动过验证及自动抢票的例子, 大家可以自己扩展或者弄错窗体.web端. ...
- 马后炮之12306抢票工具(四)--抢票Demo,2014年1月9日终结版
时隔一年多,终于朋友的忽悠下吧抢票Demo的最后一步完善了,与2014年1月9日成功生成车票. Demo仅经过自己测试,并未在高峰期进行测试,代码质量很差,因为赶工,套用去年模板并未使用设计模式. 代 ...
- [Head First设计模式]抢票中的设计模式——代理模式
系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式— ...
- 第一章-第六题(帮人抢票,帮人选课这些软件是否合法 你怎么看?)--By梁旭晖
我觉得这些软件是合法的,符合道德规范的. 计算机当初设计的初衷就是简化甚至替代人类的工作.而软件作为计算机硬件的驱动着,其设计就是体现这些原则. 现在互联网上的订票,选课类型的网站还是有很多的,比如: ...
- 如何在Chrome39添加360抢票王插件
前言: 版本:Chrome 39.0.2171.95 m CRX文件来源:ext.se.360.cn 本文地址:http://www.cnblogs.com/go2bed/p/4206714.html ...
随机推荐
- a 标签 download 和 target 不配合
发现一个奇怪的事,看代码 <a id="downloadAlink" target="_blank" href="http://www.baid ...
- Piwik网站访问统计软件安装
Piwik是一个PHP和MySQL的开放源代码的Web统计软件. 它给你一些关于你的网站的实用统计报告,比如网页浏览人数, 访问最多的页面, 搜索引擎关键词等等… Piwik拥有众多不同功能的插件,你 ...
- HDU 1866 A + B forever!
A + B forever! Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- 1.1 - python基础语法 - 总结练习题
1.编译型与解释型语言的区别,哪些属于编译型,哪些属于解释型 编译型:c/c++/go 运行速度快,开发效率低,不可跨平台 解释型:python/java/php/ruby 运行速度低,开发效率高,可 ...
- Apache mahout 源码阅读笔记-DataModel之UserBaseRecommender
先来看一下使用流程: 1)拿到DataModel 2)定义相似度计算模型 PearsonCorrelationSimilarity 3)定义用户邻域计算模型 NearestNUserNeighborh ...
- ftp 服务器搭建
一.安装 yum -y install vsftpd //通过yum来安装vsftpd chkconfig vsftpd on //设置为开机启动 vi /etc/vsftpd/vsftpd.conf ...
- swagger多个分组代码展示
/** * api信息 * * @param name 标题 * @param description 描述 * @param version 版本 * @return */ private ApiI ...
- UVA Team Queue
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u013840081/article/details/26180081 题目例如以下: Team Qu ...
- Web爬虫的C#请求发送
public class HttpControler { //post请求发送 private Encoding m_Encoding = Encoding.GetEncoding("gb2 ...
- 『HTML5挑战经典』是英雄就下100层-开源讲座(二)危险!英雄
本篇为<『HTML5挑战经典』是英雄就下100层-开源讲座>第二篇,需要用到开源引擎lufylegend,可以到这里下载: 下载地址:http://lufylegend.googlecod ...