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

可是

抢不到啊

该说不说 我抢到了

那么,今天带大家用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学习资料一定对你有用!

对于0基础小白入门:

如果你是零基础小白,想快速入门Python是可以考虑的
一方面是学习时间相对较短,学习内容更全面更集中
二方面是可以找到适合自己的学习方案

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

读者福利:2023年零基础学Python必备资料(视频+源码+工具+软件) 安全链接免费领取

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

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

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

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

四、实战案例

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

五、100道Python练习题

检查学习结果。

六、面试资料

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


​​

周杰伦演唱会总是抢不到票?教你用Python做一个自动抢票脚本相关推荐

  1. 周杰伦演唱会总是抢不到票?教你用Python做一个自动抢票脚本!

    相信想去周董演唱会的大家都用过大麦网抢票吧? 可是 抢不到啊 该说不说 我抢到了 那么,今天带大家用Python来制作一个自动抢票的脚本小程序! 知识点: 面向对象编程 selenium 操作浏览器 ...

  2. 想去看演唱却总是抢不到票?教你用Python制作一个自动抢票脚本

    前言 嗨喽!大家好,这里是魔王!! 大麦网,是中国综合类现场娱乐票务营销平台,业务覆盖演唱会. 话剧.音乐剧.体育赛事等领域. 但是因为票数有限,还有黄牛们不能丢了饭碗,所以导致了,很多人都抢不到票 ...

  3. 手把手教你用Python做一个哄女友神器,小白可上手

    大数据文摘出品 作者:诗风悠存.蒋宝尚 哄女朋友最高的境界是什么? 除了用心之外,每天不重复的甜言蜜语必然是少不了的.虽然语文老师上学的时候也教了一些东西,但是日子长了必然"江郎才尽&quo ...

  4. 顶级开发师教你用Python做一个哄女友神器,小白可上手

    哄女朋友最高的境界是什么? 除了用心之外,每天不重复的甜言蜜语必然是少不了的.虽然语文老师上学的时候也教了一些东西,但是日子长了必然"江郎才尽". 大家都是混科技圈的,借助自动化的 ...

  5. 【Python】手把手教你用Python做一个图像融合demo,小白可上手!

    创作背景 说到融合,一下子会让我们这些95后想起来童年的动漫游戏王了! 发动魔法卡--融合! 哈哈,今天说得当然不是游戏王里的魔法了,但是我们使用的是Python魔法,今天我们将使用Python编程语 ...

  6. python 变成float32_【Python】手把手教你用Python做一个图像融合demo,小白可上手!...

    创作背景 说到融合,一下子会让我们这些95后想起来童年的动漫游戏王了! 发动魔法卡--融合! 哈哈,今天说得当然不是游戏王里的魔法了,但是我们使用的是Python魔法,今天我们将使用Python编程语 ...

  7. python浪漫微信_教你用python做一个哄女友的微信自动回复机器人

    虽然题目是这样的,但是为了两人的幸福,还是尽量不要这么敷衍你的女朋友,毕竟这个世上还是有很多单身狗存在的 . 这是一个github最近刚刚上传的一个开源项目,短短几天就已经有了3000+star,原本 ...

  8. python实现视频播放器_对目前的视频播放器不满意?教你用Python做一个视频播放器...

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于Charles的皮卡丘 ,作者白露未晞me Python爬虫.数据分析.网站开 ...

  9. 用python做视觉检测系统_教你用 Python 做一个物体检测系统

    在本文中,我们将了解物体检测技术是什么以及可以用来解决此领域问题的几种不同方法,接着深入研究在Python中如何构建我们自己的对象检测系统.在本文结束时,您将拥有足够的知识来独自迎接不同的物体检测挑战 ...

最新文章

  1. Nginx if 条件判断
  2. 【js基础】理清Object、Object.prototype、Function、Function.prototype
  3. net user administrator /passwordreq:yes出现语法错误
  4. python的类和实例化对象
  5. 深入理解嵌入式中重要的编程模型
  6. 游戏编程里面有哪些经典或者很酷的算法?
  7. idea调试怎么跳出循环_IDEA调试技巧条件断点实现步骤详解
  8. 我的欧拉工程之路_3
  9. 【Java】深入理解Java虚拟机的读书笔记
  10. 2021高通AI应用创新大赛-创新赛道-垃圾分类识别 第二次讨论会
  11. sql 新建表 alter_SQL ALTER表
  12. MySQL删除s表命令_SQL语句中删除表数据drop、truncate和delete的用法
  13. swagger 上传文件 参数_如何使用Swagger上传文件
  14. 播布客教学视频_C学习笔记_9.1_整形转字符串
  15. 【Python turtle】使用turtle实现随机满天星星效果(完整代码+效果图)
  16. 雅利安人有多强悍?灭掉三个文明古国,为何败在殷商的脚下
  17. 小技巧-如何在任何一个文件夹中打开cmd
  18. armel、armhf和arm64
  19. cesium中测距测面
  20. 计算机网络之无线局域网

热门文章

  1. 2019年6月全球数字游戏收入达到92亿美元
  2. mysql 姓刘或姓李_爸爸姓刘妈妈姓李,娃的名字或成全国唯一,网友:比王者荣耀霸气...
  3. 2019年10月24日
  4. FL Studio20.9Win/Mac中文完整正式版
  5. Popeyes:姗姗迟来的洋快餐,凭什么敢称“炸鸡大师” | 知消观察
  6. 有关《三体》的一篇拓展短小说
  7. 奶茶店转型一20200510
  8. 在小公司待了4年,我废了”:别做被小公司毁掉的年轻人
  9. 精美UI强大娱乐功能组合微信小程序源码下载,安装简单
  10. python制作热图folium_Python绘制地图神器folium入门