Autoticket

大麦网自动抢票工具

讨论QQ群:

1群:680269358(已满)

2群:742585525

欢迎大家多提PR~

Preliminary

Python 3.6 + pip

Option1:Firefox(测试版本:v68.0.1.7137) + geckodriver(测试版本:v0.24.0)

Option2:Chrome (测试版本:v77.0.3865.90) + Chrome driver (测试版本:v77.0.3865.10)

注:Release中有测试版本的Windows driver,下载后请与.py文件放在同一文件夹下;代码本身支持Windows、Linux、MacOS,请移步Wiki更换浏览器驱动

Mac上通过homebrew安装drivers:

brew cask install chromedriver

brew install geckodriver

Step

【重要,用前必看!!!】

第一步:搭建python3+pip环境,可使用anaconda、pycharm等集成环境,或纯python环境 (Windows下的环境搭建流程可参考 Windows搭建python3开发环境&卸载)

第二步:依赖安装,pip install -r requirements.txt

第三步:复制config.example.json文件并将新其命名为config.json。按Basic usage中的说明填写config.json配置文件,其中real_name项的填写务必提前到目标购票网址“购票须知”处确认是否需要实名者,以及是一证一票还是一人多票,若无需实名购票,则real_name留空;若一证一票,则real_name的数量必须与ticket_num的数字相同;若一人多票,则real_name仅留一个,ticket_num可多张

注:config.json文件中的配置信息均为必填项,有些可以留空,但请勿删除,若未按说明填写正确,极有可能导致抢票失败

Basic usage

在config.json中输入相应配置信息,具体说明如下:

{

"sess": [ # 场次优先级列表,如本例中共有三个场次,根据下表,则优先选择1,再选择2,最后选择3;也可以仅设置1个

1,

2,

3,

],

"price": [ # 票价优先级,如本例中共有三档票价,根据下表,则优先选择1,再选择3;也可以仅设置1个

1,

3

],

"date": 0, # 选择第几个日期,默认为0表示不选择

"real_name": [# 实名者序号,如本例中共有两位实名者,根据序号,同时选择1,2位实名者,留空表示无需实名购票

1,

2

],

"nick_name": "your_nick_name", # 用户的昵称,用于验证登录是否成功

"ticket_num": 2, # 购买票数

"damai_url": "https://www.damai.cn/", # 大麦网官网网址

"target_url": "https://detail.damai.cn/item.htm?id=599834886497", # 目标购票网址

"browser": 0 # 浏览器类别,0为Chrome(默认),1为Firefox

}

配置实名者时请查看购票须知中是否有相关要求,下面两张图分别表示没有、有实名需求的情况:

若是首次登录,根据终端输出的提示,依次点击登录、扫码登录,代码将自动保存cookie文件(cookie.pkl)。

使用前请将待抢票者的姓名、手机、地址设为默认,如存在多名实名者,请提前保存相关信息。

配置完成后执行python Autoticket.py即可,由于有启动延迟,建议提前一段时间打开程序。

Advance usage

最后成功测试运行时间:2019-10-06。

此方法太过于依赖大麦网页面源码的元素的title、Xpath、class name、tag name等,若相应的绝对路径寻找不到则代码无法运行。

建议自己先测试一遍,自行修改相应的绝对路径或用更好的定位方法替代。

具体定位方案请参见Wiki。

本代码可修改为防弹窗类异常的持续抢票,仅需修改代码末尾:解注释"while True"与"break",注释"if True"即可。

# while True: # 可用于无限抢票,防止弹窗类异常使抢票终止

if True:

try:

if con.type == 1: # detail.damai.cn

con.choose_ticket_1()

con.check_order_1()

elif con.type == 2: # piao.damai.cn

con.choose_ticket_2()

con.check_order_2()

# break

except Exception as e:

print(e)

con.driver.get(con.target_url)

con.finish()

Potential Problems

若遇到selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version xx这样的错误,说明当前Chrome的版本不够,需要升级成xx版本

Change log

v0.1:

基本功能实现:

1)用户登录cookie记录

2)场次、票档自动勾选,优先级设定,自动跳过无票/缺货登记

3)实名者/观演人设定

v0.2:

鲁棒性提升:

1)添加用户昵称,验证登录成功

2)修改提交订单按钮的索引方式,增强适配性

v0.3:

增强适配性,添加piao.damai.cn类别网页支持

v0.4:

鲁棒性提升,修改终端输出内容,添加指定购买票数功能(暂未支持勾选多实名者)

v0.5:

改默认浏览器为Chrome,默认取消图片加载,修复了部分bug,支持detail类别网站的票数增减、多实名者勾选,调整部分定位方式,修改错误输出

v0.6:

增加日期选择功能,完善实名售票,增强异常处理与第2类网址适配

To-do List

鲁棒性增强(刷新稳定性)

代码重构,拆分两类网址和两种浏览器,维持代码整洁

速度提升(多用户多线程,减少页面元素加载)

完善第2类网址(piao.damai.cn)实名购票功能

适配手机APP端(路漫漫~)

Ref

本代码修改自Ref 1,2两个Repo,参考了Ref 3。

用python在大麦网抢票_大麦网自动抢票工具相关推荐

  1. 12306订票助手-给力火车票自动订票插件

    12306订票助手-给力火车票自动订票插件 Posted 2013-01-01  |  11条评论  |  By 熊猫人 火车票  12306  12306.cn  订票助手  订票插件  在外漂泊了 ...

  2. python爬虫和数据分析电脑推荐_大数据分析必备的5款Python爬虫库

    在数据科学或人工智能领域,除了算法之外,最重要的应该是数据了.甚至可以说一个模型到最后决定其准确度的往往不是算法而是数据.在现实中,缺少足够的数据成了数据分析师获得优秀模型的主要阻碍.可喜的是,现在网 ...

  3. python自动化部署hadoop集群_大数据集群的自动化运维实现思路

    原标题:大数据集群的自动化运维实现思路 | 作者简介 王晓伟 知数堂<大数据实战就业>课程讲师 六年大数据相关工作经验 清华大学软件工程硕士 曾就职于网易.搜狗等互联网企业 从事大数据及数 ...

  4. python大数据好不好学_大数据好学吗?想转行大数据??

    作为一名IT从业者,同时也是一名教育工作者,我来回答一下这个问题. 首先,虽然大数据技术具有一定的难度,但是随着大数据技术体系的逐渐丰富和完善,大数据领域对于人才的需求类型也在不断趋于多元化,不同知识 ...

  5. python与大数据是什么_大数据和python有什么区别

    大数据(big data),IT行业术语,是指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才 能具有更强的决策力.洞察发现力和流程优化能力的海量.高增长率和多样化 ...

  6. python开发和大数据开发工程师_大数据开发工程师的岗位职责

    大数据开发工程师负责该领域的业务需求讨论,完成技术方案及数据开发.下面是学习啦小编整理的大数据开发工程师的岗位职责. 大数据开发工程师的岗位职责1 职责: 1.负责所分管团队的团队建设和日常管理工作; ...

  7. python大数据就业方向_大数据方向:就业主要从事哪些工作?

    你好. 一.大数据就业前景 大数据行业人才稀缺,人才需求量达100万+,随着人工智能.物联网.云计算的快速发展,大数据人才需求也急剧增加,未来还将不断扩大.而且大数据人才的薪资也是普遍较高的,2018 ...

  8. 大数据 就业 缺口_大数据人才缺口大!乌兰察布从政策激励等方面吸引人才

    授牌仪式 9月25日,记者从第八届内蒙古"草原英才"高层次人才合作交流会暨呼包鄂乌人才创新创业周乌兰察布分会场同步启动的2020年大数据产业发展与人才培养大会上获悉,乌兰察布市大数 ...

  9. Hadoop! | 大数据百科 | 数据观 | 中国大数据产业观察_大数据门户

    深度好文丨读完此文,就知道Hadoop了! 来源:BiThink 时间:2016-04-12 15:14:39 作者:陈飚 "昔我十年前,与君始相识." 一瞬间Hadoop也到了要 ...

  10. 大数据产业链结构_大数据产业链包含那几个应用环节?

    大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海量.高增长率和多样化的信息资产. 大数 ...

最新文章

  1. 百度大脑开放日第三期:四大全新平台、两大场景方案助力开发者逐梦 AI
  2. 官宣!推动深圳大学、南科大创建“双一流”!
  3. pytorch设计卷积神经网络的广义分析
  4. centos 更换java版本_centos7 更换jdk版本
  5. [导入]编写程序实现n阶(n为奇数)魔方(C)
  6. python中range和xrange的区别_python中range和xrange的区别
  7. 循环序列模型 —— 1.6 语言模型和序列生成
  8. 计算机中常用的三种码制,码制
  9. Thinkpad X61驱动下载及安装方法 for windows XP
  10. win10连不上网,几种尝试
  11. 双十一报告(B站平台)|品牌、UP主内容营销如何实现共赢?
  12. 最难得的素养,是等人把话说完
  13. 网络电影也做春节档,能够与院线争到多少蛋糕?
  14. 【20200208】【lyk】牛牛的DRB迷宫
  15. c# 定时windows服务发送邮件
  16. ESP01 连接OneNet平台
  17. Android更换APP字体—TextView各种字体样式
  18. macbook 常用键盘快捷键大全 mac os 苹果电脑
  19. 请将磁盘插入“U盘(H)“的情况无法访问 磁盘结构损坏且无法读取
  20. Kill_Vagaa_Process完整版

热门文章

  1. 如何使用python将数据写入txt文件
  2. wap_supplicant介绍
  3. 8、(八)外汇基础篇之外汇期权交易
  4. mybatis开发神器mybatis plus
  5. python编程软件开发_Python编程-绑定方法、软件开发
  6. 弹性碰撞后速度方向_碰撞模型中的速度关系推导
  7. Use of @OneToMany or @ManyToMany targeting an unmapped class
  8. 佛系程序员之歌 - 和我一起减减压
  9. Python-等额本息计算
  10. 为资产分类定义折旧范围_SAP折旧范围