Python制作【大麦网】抢票程序,看演唱会再也不怕没票了_python抢票(1)


**初始化加载**



class Concert:
def init(self):
self.status = 0 # 状态,表示如今进行到何种程度
self.login_method = 1 # {0:模拟登录,1:Cookie登录}自行选择登录方式
self.driver = webdriver.Chrome(executable_path=‘chromedriver.exe’) # 默认Chrome浏览器


**登录调用设置cookie**



def set_cookie(self):
    self.driver.get(damai_url)
    print("###请点击登录###")
    while self.driver.title.find('大麦网-全球演出赛事官方购票平台') != -1:
        sleep(1)
    print('###请扫码登录###')

    while self.driver.title != '大麦网-全球演出赛事官方购票平台-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"))  # 载入cookie
        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'):                     
        # 如果不存在cookie.pkl,就获取一下
            self.set_cookie()
        else:
            self.driver.get(target_url)
            self.get_cookie()

**打开浏览器**



def enter_concert(self):
“”“打开浏览器”“”
print(‘###打开浏览器,进入大麦网###’)
# self.driver.maximize_window() # 最大化窗口
# 调用登陆
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'):
            # 座位手动选择 选中座位之后//*[@id="app"]/div[2]/div[2]/div[1]/div[2]/img 就会消失
            print('请快速的选择您的座位!!!')
        # 消失之后就会出现 //*[@id="app"]/div[2]/div[2]/div[2]/div
        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(“###购票人信息选中失败,自行查看元素位置###”)
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

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

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

二、学习软件

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

三、全套PDF电子书

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

四、入门学习视频

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

五、实战案例

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

六、面试资料

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

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 26
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
抢票是违反站规定和道德的行为,不建议使用。这里提供的代码仅供学习和研究目的,不得用于非法用途。 以下是一个大麦抢票Python 代码示例,可以用于自动化购买限时抢购的门票。 ```python import requests import time import hashlib # 填写你的账号密码和活动信息 username = 'your_username' password = 'your_password' activity_id = '123456' activity_url = 'https://www.damai.cn/project/' + activity_id + '.html' # 登录大麦 session = requests.Session() session.headers.update({ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299' }) login_url = 'https://secure.damai.cn/login?ru=https%3A%2F%2Fwww.damai.cn%2F' session.get(login_url) login_data = { 'u': username, 'p': hashlib.md5(password.encode('utf-8')).hexdigest(), 'verifycode': '', 'remember': '0', 'loginid': '', 'nloginpwd': '', 'nonce': '', 'logintype': '', 'loginsite': 0, 'timestamp': int(time.time() * 1000), 'callback': 'jQuery1910863466670682696_1515079871564', '_': int(time.time() * 1000) } r = session.post(login_url, data=login_data) # 获取活动信息 activity_data = { 'id': activity_id, 'type': 1, 'rnd': int(time.time() * 1000), '_': int(time.time() * 1000) } r = session.get(activity_url, params=activity_data) # 提交订单 submit_data = { 'buyNum': 1, 'price': r.json()['data']['priceStr'], 'projectId': activity_id, 'totalPrice': r.json()['data']['priceStr'], 'ticketArr': r.json()['data']['performList'][0]['ticketList'][0]['priceStr'] + '|1|', 'type': '1', 'venueId': r.json()['data']['venueId'], 'prizeType': '', 'orderFrom': '0', 'orderRemark': '', 'orderTicketList': [{ 'price': r.json()['data']['performList'][0]['ticketList'][0]['priceStr'], 'projectPrice': r.json()['data']['priceStr'], 'projectId': activity_id, 'ticketId': r.json()['data']['performList'][0]['ticketList'][0]['ticketId'], 'ticketName': r.json()['data']['performList'][0]['ticketList'][0]['ticketName'], 'ticketNum': 1, 'ticketPrice': r.json()['data']['performList'][0]['ticketList'][0]['priceStr'] }], 'idCardList': '', 'invoiceTitle': '', 'ticketFlag': '1', 'platformId': '', 'merchandiseFlag': '' } submit_url = 'https://buy.damai.cn/confirmOrder.html' r = session.post(submit_url, data=submit_data) print(r.json()) ``` 该代码会模拟用户登录大麦并提交订单,但并不能保证一定能够成功抢到票。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值