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

本文介绍了使用Python编写的自动化脚本,用于音乐会网站的登录、页面操作(如判断元素是否存在、选择座位、下单等),旨在展示如何利用Python进行网页自动化。同时,还提到了系统化学习Python的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    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大麦抢票源代码,已经打包好了,朋友们如果需要可以扫描下方优快云官方认证二维码免费领取!

Python学习资源及经验总结

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

对于0基础小白入门:

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

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

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

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

点击免费领取《优快云大礼包》:

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

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

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

2、Python课程视频

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

img

3、全套PDF电子书

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

img

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

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

img

如果你也是看准了Python,想自学Python,在这里为大家准备了丰厚的免费学习大礼包,带大家一起学习,给大家剖析Python兼职、就业行情前景的这些事儿。

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

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

二、学习软件

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

三、全套PDF电子书

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

四、入门学习视频

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

四、实战案例

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

五、面试资料

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

成为一个Python程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!

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

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

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
thon程序员专家或许需要花费数年时间,但是打下坚实的基础只要几周就可以,如果你按照我提供的学习路线以及资料有意识地去实践,你就有很大可能成功!
最后祝你好运!!!

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

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

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

<think>好的,用户想用Python编写自动化脚本演唱会门票。首先,我得回忆一下相关的知识。记得之前看过几个引用,里面提到了Selenium库,还有ChromeDriver的配置。引用[2]和[3]都提到了使用Selenium来实现自动,特别是大麦网的例子。需要确保用户正确安装Python和Selenium,并且配置好浏览器驱动。 用户的问题集中在方法或代码上,所以需要分步骤讲解。首先环境搭建,安装必要的库,比如Selenium,可能还需要处理验证码的问题,但引用中没有详细提到验证码的解决方法,可能需要提醒用户注意这一点,或者使用等待时间和手动介入。 然后,代码结构方面,引用中的示例代码可能包括打开浏览器、登录、选择场次和价,然后下单。需要确保代码示例正确,比如使用WebDriverWait和expected_conditions来等待元素加载,避免因为页面加载慢而找不到元素。 另外,引用[3]提到将ChromeDriver的路径添加到环境变量,或者直接在代码中指定路径。这部分需要明确说明,避免用户运行时出错。 还需要考虑可能的问题,比如时的并发处理,或者如何快速循环检查源。不过根据引用内容,可能只需要基本的自动化操作,不需要太复杂的多线程。 最后,提醒用户法律和道德问题,避免过于频繁的请求导致被封IP,或者违反网站的使用条款。这些在引用中没有提到,但作为负责任的回答,应该包含这些注意事项。 总结回答的结构:环境准备、代码编写步骤、关键点说明、注意事项,最后生成相关问题。确保所有LaTeX格式正确,行内公式用$...$,独立公式用$$...$$,但这个问题可能不需要数学公式,所以可能用不上。不过根据用户给的示例,代码部分需要用代码块,并且引用标识放在相关段落后面。</think>以下是使用Python编写自动脚本的分步指南,结合了Selenium库和主流务平台操作逻辑: ### 一、环境准备 1. 安装Python 3.6+和pip 2. 安装依赖库: ```bash pip install selenium webdriver-manager ``` 3. 配置浏览器驱动(推荐Chrome): ```python from webdriver_manager.chrome import ChromeDriverManager driver = webdriver.Chrome(ChromeDriverManager().install()) ``` ### 二、核心代码实现 ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 初始化浏览器 driver = webdriver.Chrome(executable_path="chromedriver路径") driver.get("https://www.damai.cn/") # 以大麦网为例 try: # 登录操作 WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.CLASS_NAME, "login-user"))).click() # 输入账号密码(需替换为实际值) driver.find_element(By.ID, "username").send_keys("your_username") driver.find_element(By.ID, "password").send_keys("your_password") driver.find_element(By.CLASS_NAME, "login-btn").click() # 搜索目标演出 search_box = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CLASS_NAME, "search-input"))) search_box.send_keys("周杰伦演唱会") driver.find_element(By.CLASS_NAME, "search-btn").click() # 选择场次和价 WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.XPATH, "//div[@class='perform__order__select']//span[text()='选择场次']"))).click() driver.find_element(By.XPATH, "//li[@class='skuname']").click() # 立即购买 driver.find_element(By.XPATH, "//div[@class='buy-link']").click() # 提交订单 WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.XPATH, "//div[@class='submit-btn']"))).click() finally: driver.quit() ``` ### 三、关键优化点 1. **智能等待机制**:使用`WebDriverWait`结合`expected_conditions`确保元素加载完成,避免使用固定`sleep`[^3] 2. **多线程监控**:可配合`threading`模块实现多页面监控 ```python import threading def monitor_ticket(url): # 独立监控线程实现 pass ``` 3. **验证码处理**:建议人工介入识别,或使用第三方OCR服务(需注意法律风险) ### 四、注意事项 1. 遵守目标网站的`robots.txt`协议 2. 设置合理的时间间隔(建议≥3秒),避免被封禁IP 3. 提前完成账号登录和收货地址设置 4. 建议在预约前30分钟启动脚本[^2]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值