本节将自主选座和添加邮寄地址和购票人信息两个部分的功能划到一起,因为这两部分的内容极为相似,其核心的做法都是对网站前端的类class,按钮button,标签div进行监控,当检测到对应的内容时,进行如click等操作。

这里以对选择购票人为例,

因为这里有一个常见的按钮监控不到的问题,

这里分析原因,其一是大麦网本身防止用户使用软件进行抢票,过快的操作将被禁止,其二是大麦网本身对标签的日常更新,导致很多抢票软件需要继续开发才能继续使用。

解决方案如下:

1.更新标签

(1)按F12,点击红标按钮,对于鼠标接触到的所有前端信息,控制台都将转到其标签下

(2)找到对应的标签并进行前端语言转化

可以看到标签1对应的checkbox目前处于false状态,也可以看到观演人的标签是处于w1200这个类下的,同时也在confirmOrder_1这个标签下,这里采用confirmOrder_1作为基检测标签,对应到input按钮的逻辑为:

div(confirmOrder_1)/div[2]/div[2]/div[1]/div[1]/label/span/input

2.进行不断刷新的抢票机制

由于网络问题有时候检测不到checkbox的加载,这里采用的方案是一直监听aria-checked的状态,如果一直为false,那么一直进行选择,即

 while(stat.get_attribute('aria-checked') == 'false'):time.sleep(0.5)stat = self.driver.find_elements_by_xpath('//div[@id="confirmOrder_1"]/div[2]/div[2]/div[1]/div[1]/label/span/input')[0]self.driver.find_elements_by_xpath('//div[@id="confirmOrder_1"]/div[2]/div[2]/div[1]/div[1]/label/span/input')[0].click()print(stat.get_attribute('aria-checked'))

总体代码如下:

​def enter_concert(self):print('###打开浏览器,进入大麦网###')self.driver = webdriver.Chrome()self.login()self.driver.refresh()self.status = 2print("###登录成功###")def choose_ticket(self):if self.status == 2:self.num = 1print("=" * 30)print("###开始进行日期及票价选择###")while self.driver.title.find('确认订单') == -1:buybutton = self.driver.find_element_by_class_name('buybtn').textif buybutton == "即将开抢":self.status = 2self.driver.get(target_url)print('###抢票未开始,刷新等待开始###')continueelif buybutton == "立即预定":self.driver.find_element_by_class_name('buybtn').click()self.status = 3self.num = 1elif buybutton == "立即购买":self.driver.find_element_by_class_name('buybtn').click()self.status = 4elif buybutton == "选座购买":self.driver.find_element_by_class_name('buybtn').click()self.status = 5elif buybutton == "提交缺货登记":print('###抢票失败,请手动提交缺货登记###')breaktitle = self.driver.titleif title == "确认订单":self.check_order()elif self.status == 5:print("###请自行选择位置和票价###")breakdef check_order(self):if self.status in [3, 4]:if(ticket_number == '1'):stat = self.driver.find_elements_by_xpath('//div[@id="confirmOrder_1"]/div[2]/div[2]/div[1]/div[1]/label/span/input')[0]while(stat.get_attribute('aria-checked') == 'false'):time.sleep(0.5)stat = self.driver.find_elements_by_xpath('//div[@id="confirmOrder_1"]/div[2]/div[2]/div[1]/div[1]/label/span/input')[0]self.driver.find_elements_by_xpath('//div[@id="confirmOrder_1"]/div[2]/div[2]/div[1]/div[1]/label/span/input')[0].click()print(stat.get_attribute('aria-checked'))print('###不选择订单优惠###')print('###请在付款完成后下载大麦APP进入订单详情页申请开具###')time.sleep(1)self.driver.find_elements_by_xpath('//div[@class = "w1200"]//div[2]//div//div[9]//button[1]')[0].click()def finish(self):self.driver.quit()​

欢迎评论文章,给予宝贵建议,工程提供在github下载学习,请关注作者,共同学习交流。

github工程:https://github.com/sinxuy/Damai

抢票软件开发(三) 其余功能相关推荐

  1. 抢票软件开发(四) 软件封装

    封装软件是采用的是config.ini配置文件与pyinstaller进行结合的方式, 1.config文件中主要配置的是网站链接等信息,供用户根据需要进行调整 2.pyinstaller是将软件封装 ...

  2. 12306 出招抢票软件,技术黄牛生意要“黄”?

    加速包实际上只是抢票软件企业的一种"空手套白狼"的营销工具. 作者 | 步清尘 本文经授权转自猎云网(ID: ilieyun) 这个春运,黄牛党们的生意不太好做. 不管是平台型第三 ...

  3. 12306候补购票功能怎么用?抢票软件依旧能抢到票

    实际上,铁道部开发的铁路售票及订单系统的使用及推广,已经缓解了不少购票者的压力.而为了迎合互联网的快速发展,铁路客票系统多次升级.不过,目前存在的购票人数上涨.恶意抢票及占票及屯票的现象仍然很严重,很 ...

  4. 景区门票预约系统——抢票软件定制开发,抢票神器 【故宫博物院(旅行社大门票)】

    核心代码: while True: response = requests.post( 'https://lotsmg.dpm.org.cn/tyApi/zyborder/order/saveUnpa ...

  5. 电脑抢票软件-电脑自动化订票软件开发

    电脑抢票软件-电脑自动化订票软件开发 看了这个漫画,有什么想法? 确实,人想和机器人去抢资源太难了,一个人只有一只手能去抢,而软件却可以用10线程,100线程的去抢,还能做到每个页面用不同的IP.

  6. 假期延长,抢票软件到底还行不?

    作者 | 唐亚华 本文经授权转载自燃财经(ID:rancaijing) 春节假期即将结束,人口大迁移又要来临. 虽然12306近日已经宣称屏蔽了部分抢票软件,并推出官方候补功能,但市面上提供抢票服务的 ...

  7. 自动抢票软件哪个好?

    抢票软件介绍 随着互联网的进一步普及,全民抢票的时代已经到来,移动互联网的到来让互联网抢票也在悄然的发生改变. 从最开始的网页抢票再到现在的手机APP抢票,都在印证着互联网发展方向的改变.最开始的抢票 ...

  8. 12036抢票软件实现(一)

    近期好多人私信我,能不能需要分享完整代码.为了帮助大家,我以及将代码整理和教学视频我已经上传了CSDN,欢迎私信交流,共同学习共同进步:下载地址 求给五星好评,谢谢啦! 一.先展示一下运行代码后的执行 ...

  9. 【每日新闻】第三方抢票软件今年成功率比往年低 | 工信部多举措破解软件产业大而不强

    每一个企业级的人  都置顶了 中国软件网 中国软件网  为你带来最新鲜的行业干货 小编点评 感觉我们未来的生活 会越来越多的依赖软件 期待2018年 软件行业将要发生的 新的改变 趋势洞察 谢少锋:工 ...

  10. 收藏!用 Python 写一个抢票软件

    本文介绍的是如何用 Python 语言实现 12306 自动预定列车票,也就是坊间常说的"抢票",但个人觉得,这不算是"抢",只不过是一定程度的自动化. 总体设 ...

最新文章

  1. 拖链电缆 机器人电缆_尼龙拖链在机器中起着电缆的作用
  2. STM32mini使用UCOSII信号量和邮箱实现任务挂起和恢复
  3. Java基础-IO流
  4. spring+hibernate的clob大字段处理
  5. spring boot 2.1.4 hibernate 二级缓存 Caffeine实现
  6. 网络安全审计系统产品竞品分析
  7. 计算机化分析原理波涛,(波涛)证券期货投资计算机化技术分析原理OCR.pdf
  8. 个人网站可以申请微信授权登录吗
  9. 移动应用、大数据等推动广域网优化未来三年高速增长
  10. 微信朋友圈营销如何做好头像_昵称_签名_背景基础设置?
  11. 【渝粤教育】广东开放大学 应用创意写作 形成性考核 (54)
  12. docker启动容器指定主机名,网络和ip地址
  13. 使用synchronized实现Lock接口的lock和unlock方法
  14. <script>标签通过src属性调用js文件
  15. office2016实用论文排版技巧
  16. SQLTXPLAIN
  17. 使用禅道进行敏捷项目管理
  18. Unity MOBA类型游戏的战争迷雾效果
  19. centos7 校正linux系统时间_Linux系统:centos7下安装Jdk8、Tomcat8、MySQL5.7环境
  20. NTP时间服务器部署以及时间同步设置

热门文章

  1. LANP源码安装注释版
  2. mysql 不等于 符号写法
  3. 国内随时接收发送谷歌邮箱
  4. work文档,Excel表格常用快捷键
  5. SPSS 多元线性回归
  6. linux物理服务器搬迁后,更换了路由器,ping不同外网
  7. vue 导出表格到xlsx中
  8. 检测分割算法改进(篇二) Residual Feature Augmentation(RFA模块)及Adaptive Spatial Fusion(ASF模块)
  9. java如何知道城市是省会_全国各省的省会都是怎么确定的?
  10. 树莓派python脚本开机自启动设置