周杰伦演唱会门票还能这样抢?看过来!我用Python实现了大麦网自动抢票功能

news/2024/10/21 3:30:06/

在这里插入图片描述

相信想去周董演唱会的大家都用过大麦网抢票吧?

可是…抢不到啊!!!

该说不说 我抢到了

在这里插入图片描述

那么,今天带大家用Python来制作一个自动抢票的脚本小程序!
知识点:

  • 面向对象编程
  • selenium 操作浏览器
  • pickle 保存和读取Cookie实现免登陆
  • time 做延时操作
  • os 创建文件,判断文件是否存在

开发环境:

  • 版 本:anaconda5.2.0(python3.6.5)
  • 编辑器:pycharm

先导入本次所需的模块

import os  
import time  
import pickle  
from time import sleep  
from selenium import webdriver  

第一步:实现免登录


确定目标,设置全局变量

damai_url = "就是那个网站"  
login_url = "就是那个登陆地址"  
target_url = '就是那个目标网站  
#这里不是我不放,是平台不给放  
#要全部的就来  

初始化加载

class Concert:  def __init__(self):  self.status = 0           self.login_method = 1     self.driver = webdriver.Chrome(executable_path='chromedriver.exe')        

登录调用设置cookie

def set_cookie(self):  self.driver.get(damai_url)  print("###请点击登录###")  while self.driver.title.find('dm-全球演出赛事官方购票平台') != -1:  sleep(1)  print('###请扫码登录###')  while self.driver.title != 'dm-全球演出赛事官方购票平台-100%正品、先付先抢、在线选座!':  sleep(1)  print("###扫码成功###")  pickle.dump(self.driver.get_cookies(), open("cookies.pkl", "wb"))  print("###Cookie保存成功###")  self.driver.get(target_url  

获取cookie

def get_cookie(self):  try:  cookies = pickle.load(open("cookies.pkl", "rb"))   for cookie in cookies:  cookie_dict = {  'domain':'.damai.cn',    'name': cookie.get('name'),  'value': cookie.get('value')  }  self.driver.add_cookie(cookie_dict)  print('###载入Cookie###')  except Exception as e:  print(e)  

登录

    def login(self):  if self.login_method==0:  self.driver.get(login_url)                                  print('###开始登录###')  elif self.login_method==1:  if not os.path.exists('cookies.pkl'):                       self.set_cookie()  else:  self.driver.get(target_url)  self.get_cookie()

打开浏览器

def enter_concert(self):  """打开浏览器"""  print('###打开浏览器,进入dm网###')  self.login()                        self.driver.refresh()                   self.status = 2                       print("###登录成功###")  if self.isElementExist('/html/body/div[2]/div[2]/div/div/div[3]/div[2]'):  self.driver.find_element_by_xpath('/html/body/div[2]/div[2]/div/div/div[3]/div[2]').click()  

第二步:抢票并下单


判断元素是否存在

def isElementExist(self, element):  flag = True  browser = self.driver  try:  browser.find_element_by_xpath(element)  return flag  except:  flag = False  return flag  

选票操作

def choose_ticket(self):  if self.status == 2:                 print("="*30)  print("###开始进行日期及票价选择###")  while self.driver.title.find('确认订单') == -1:             try:  buybutton = self.driver.find_element_by_class_name('buybtn').text  if buybutton == "提交缺货登记":  self.status=2  self.driver.get(target_url)  print('###抢票未开始,刷新等待开始###')  continue  elif buybutton == "立即预定":  self.driver.find_element_by_class_name('buybtn').click()  self.status = 3  elif buybutton == "立即购买":  self.driver.find_element_by_class_name('buybtn').click()  self.status = 4  elif buybutton == "选座购买":  self.driver.find_element_by_class_name('buybtn').click()  self.status = 5  except:  print('###未跳转到订单结算界面###')  title = self.driver.title  if title == '选座购买':  self.choice_seats()  elif title == '确认订单':  while True:  print('waiting ......')  if self.isElementExist('//*[@id="container"]/div/div[9]/button'):  self.check_order()  break  

选择座位

    def choice_seats(self):  while self.driver.title == '选座购买':  while self.isElementExist('//*[@id="app"]/div[2]/div[2]/div[1]/div[2]/img'):  print('请快速的选择您的座位!!!')  while self.isElementExist('//*[@id="app"]/div[2]/div[2]/div[2]/div'):  self.driver.find_element_by_xpath('//*[@id="app"]/div[2]/div[2]/div[2]/button').click()

下单操作

def check_order(self):  if self.status in [3,4,5]:  print('###开始确认订单###')  try:  self.driver.find_element_by_xpath('//*[@id="container"]/div/div[2]/div[2]/div[1]/div/label').click()  except Exception as e:  print("###购票人信息选中失败,自行查看元素位置###")  print(e)  time.sleep(0.5)  self.driver.find_element_by_xpath('//div[@class = "w1200"]//div[2]//div//div[9]//button[1]').click()  

抢票完成,退出

def finish(self):  self.driver.quit()  

测试代码是否成功

if __name__ == '__main__':  try:  con = Concert()               con.enter_concert()         con.choose_ticket()          except Exception as e:  print(e)  con.finish()  

最后看下效果如何

这里是演示嗷,我买到票的时候忘记录了哈哈哈哈哈

在这里插入图片描述

最后

我真的庆幸还好我学了python ,该说不说,有点用的

从现在开始就准备去看演唱会噜~

完整Python大麦抢票源代码,已经打包好了,朋友们如果需要可以扫描下方CSDN官方认证二维码免费领取!

Python学习资源及经验总结

如果你也喜欢编程,想通过学习Python转行、做副业或者提升工作效率,我也为大家整理了一份 【最新全套Python学习资料】一定对你有用!

对于0基础小白入门:

如果你是零基础小白,想快速入门Python是可以考虑的!

1、学习时间相对较短,学习内容更全面更集中

2、可以找到适合自己的学习方案

这份资料包含:Python安装包+激活码、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等教程,带你从零开始系统性的学好Python!


点击免费领取《CSDN大礼包》:

最新全套【Python入门到进阶资料 & 实战源码 &安装工具】


1、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

2、Python课程视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

img

3、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

img

4、清华编程大佬出品《漫画看学Python》

用通俗易懂的漫画,来教你学习Python,让你更容易记住,并且不会枯燥乏味。

img

5、Python实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

6、互联网企业面试真题

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

img

这份完整版的Python全套学习资料已经上传至CSDN官方,朋友们如果需要可以扫描下方二维码免费获取【保证100%免费】

以上全套资料已经为大家打包准备好了,希望对正在学习Python的你有所帮助!


如果你觉得这篇文章有帮助,可以点个赞呀~

我会坚持每天更新Python相关干货,分享自己的学习经验帮助想学习Python的朋友们少走弯路!


http://www.ppmy.cn/news/470093.html

相关文章

张学友1/2世纪演唱会巡演日程、曲目及新闻汇总

【广州站】张学友不断刷新吉尼斯世界纪录(11楼 http://www.jackybbs.com/thread-43212-1-1.html 2010-2012 张学友1/2世纪演唱会巡演日程、曲目及新闻汇总(随时更新) http://www.jackybbs.com/thread-23000-1-1.html 2月25日 广州 (2/2) 世界巡演第六十八站 第一百十六场 中…

万博智云与品高股份完成产品兼容性互认证,持续助力国产化生态建设

近日,万博智云的HyperBDR云容灾软件与广州市品高股份有限公司(简称:品高股份)旗下产品品高基础架构云资源管理软件V9.0完成了产品兼容性认证。 经万博智云和品高云双方人员的共同测试,得出结论: HyperBDR…

邓紫棋演唱会门票贵过陈奕迅 网友:还不够级别

邓紫棋(资料图) 邓紫棋趁热打铁开巡演(资料视频) 环球时报-环球网4月17日报道 因参加《我是歌手2》而人气飙升的香港歌手邓紫棋,凭借其独特的嗓音和甜美的外形收获了大量的粉丝,而《我是歌手2》的亚军名次更…

门票

【题目描述】 省运会准备进行开幕式门票的销售&#xff0c;假设售票点前聚集了N个人购买门票。有M组出现第X个人帮助第Y个人买票(X可以等于Y&#xff0c;此时第X个人可以给自己买票)&#xff0c;这时消耗时间W[X,Y]&#xff08;1<W[x,y]<20000&#xff09;。 当然&…

女神想看演唱会买不到门票,还好我会Python,分分钟就抢到了

哈喽兄弟们&#xff0c;我是轻松~ 天天分享干货&#xff0c;今天高低要教一下大家一波怎么做舔狗了&#xff01; 事情是这样的&#xff0c;女神喜欢的歌星最近开演唱会&#xff0c;半夜打电话给我说想去看&#xff0c;但是抢不到票了&#xff0c;让我给她想想办法。 当时我就…

5年后 又听王菲98-99香港唱游大世界演唱会

大学时候两盒磁带陪伴了我很久&#xff0c;高中毕业时错过了那两张CD&#xff0c;再也没有遇到。在eMule上下载到了dvdrip&#xff0c;可惜音效很差&#xff0c;还是很容易被她的《梦醒了》、《红豆》、《我愿意》所感动&#xff0c;可惜只通过eMule在香港搜索到了mp3&#xff…

什么是云游戏?和普通游戏有什么区别?

自上世纪七十年代的电子游戏第一次出现&#xff0c;到现在发展的端游、页游和手游等&#xff0c;游戏也增加至成百上千种。游戏行业的迅速发展&#xff0c;给许多人提供了就业岗位&#xff0c;带动了经济的发展。有很多接触过游戏的人都不知道云游戏是什么&#xff0c;今天小编…

标准低代码平台的五大核心能力

低代码的主要作用是降低应用开发的准入门槛&#xff0c;赋能不同角色人员&#xff0c;让开发者利 用图形化界面&#xff0c;通过拖拉拽操作&#xff0c;以“搭积木”的方式快速开发软件应用&#xff0c;减少重复的 基础搭建工作。中国信通院基于低代码无代码推进中心的研究工作…