基于Python和Selenium的大麦网自动抢票脚本

这篇具有很好参考价值的文章主要介绍了基于Python和Selenium的大麦网自动抢票脚本。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

自动化抢票的脚本,需通过Selenium库来实现自动化操作。(学习参考)

# 导入必要的库
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
import time
# 设置浏览器参数
options = webdriver.ChromeOptions()
options.add_argument("--incognito")
options.add_argument("--start-maximized")
# 创建浏览器对象
browser = webdriver.Chrome(options=options)
# 访问大麦网登录页面
browser.get('https://passport.damai.cn/login?ru=https%3A%2F%2Fwww.damai.cn%2F')
# 等待登录页面加载完成
WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//div[@class="login-title"]')))
# 输入账号密码并点击登录
username = 'your_username'  # 替换为自己的账号
password = 'your_password'  # 替换为自己的密码
browser.find_element_by_xpath('//input[@name="username"]').send_keys(username)
browser.find_element_by_xpath('//input[@name="password"]').send_keys(password)
browser.find_element_by_xpath('//button[text()="登录"]').click()
# 等待登录成功并跳转到抢票页面
WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//div[@class="page__title"]')))
browser.get('https://detail.damai.cn/item.htm?id=123456')  # 替换为自己要抢票的演出链接
# 等待抢票页面加载完成
WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//div[@class="buybtn"]')))
# 开始不断刷新页面,直到出现“立即购买”按钮
while True:
    try:
        browser.refresh()
        buy_btn = browser.find_element_by_xpath('//div[@class="buybtn"]')
        if buy_btn.text == '立即购买':
            break
    except:
        pass
    time.sleep(1)
# 点击“立即购买”按钮
buy_btn.click()
# 等待选择票框加载完成
WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//div[@class="select_right"]')))
# 选择票框、票价和数量(这里只选择一张最便宜的票)
browser.find_element_by_xpath('//span[text()="选择票框"]').click()
WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//ul[@class="perform__select__list"]')))
select_list = browser.find_elements_by_xpath('//ul[@class="perform__select__list"]//li')
select_list[0].click()
WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//span[@class="select_right_list_content_price_text"]')))
select_price = browser.find_elements_by_xpath('//span[@class="select_right_list_content_price_text"]')[0]
select_price.click()
WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//div[@class
下面是注释
# 初始化浏览器
browser = webdriver.Chrome()
# 找到包含选项的元素列表
select_list = browser.find_elements_by_xpath('//ul[@class="perform__select__list"]//li')
# 点击第一个选项
select_list[0].click()
# 等待价格元素出现
WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//span[@class="select_right_list_content_price_text"]')))
# 找到价格元素
select_price = browser.find_elements_by_xpath('//span[@class="select_right_list_content_price_text"]')[0]
# 点击价格元素
select_price.click()
# 等待某个元素出现
WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//div[@class="some_class"]')))

优化后的完整代码:

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
import time
def login_and_buy_ticket(username, password, performance_link):
    # 设置浏览器参数
    options = webdriver.ChromeOptions()
    options.add_argument("--incognito")
    options.add_argument("--start-maximized")
    # 创建浏览器对象
    with webdriver.Chrome(options=options) as browser:
        # 访问大麦网登录页面
        browser.get('https://passport.damai.cn/login?ru=https%3A%2F%2Fwww.damai.cn%2F')
        # 等待登录页面加载完成并输入账号密码
        try:
            WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//div[@class="login-title"]')))
            browser.find_element_by_xpath('//input[@name="username"]').send_keys(username)
            browser.find_element_by_xpath('//input[@name="password"]').send_keys(password)
            browser.find_element_by_xpath('//button[text()="登录"]').click()
        except Exception as e:
            print(f"Error during login: {e}")
            return
        # 等待登录成功并跳转到抢票页面
        try:
            WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//div[@class="page__title"]')))
            browser.get(performance_link)
        except Exception as e:
            print(f"Error navigating to performance page: {e}")
            return
        # 等待抢票页面加载完成并开始不断刷新页面,直到出现“立即购买”按钮
        while True:
            try:
                browser.refresh()
                buy_btn = WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//div[@class="buybtn"]')))
                if buy_btn.text == '立即购买':
                    buy_btn.click()
                    break
            except Exception as e:
                print(f"Error while waiting for buy button: {e}")
                time.sleep(2)
        # 选择票框、票价和数量
        try:
            WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.XPATH, '//div[@class="select_right"]')))
            browser.find_element_by_xpath('//span[text()="选择票框"]').click()
            select_list = WebDriverWait(browser, 10).until(EC.presence_of_all_elements_located((By.XPATH, '//ul[@class="perform__select__list"]//li')))
            select_list[0].click()
            select_price = WebDriverWait(browser, 10).until(EC.presence_of_all_elements_located((By.XPATH, '//span[@class="select_right_list_content_price_text"]')))[0]
            select_price.click()
        except Exception as e:
            print(f"Error while selecting tickets: {e}")
# 调用函数
login_and_buy_ticket('your_username', 'your_password', 'https://detail.damai.cn/item.htm?id=123456')

需要注意的:文章来源地址https://www.toymoban.com/news/detail-509257.html

  1. 我用了with语句保证浏览器实例在函数结束后正确关闭。
  2. 我用了几个try-except块处理在各个步骤可能出现的异常,它可以在异常的时候打印出错误的信息。
  3. 我把大部分代码封装在一个函数中,你如果需要,就可以轻轻松松再次调用该函数或者用作其他脚本的部分。

到了这里,关于基于Python和Selenium的大麦网自动抢票脚本的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 大麦抢票脚本

    请注意,编写或使用抢票脚本可能违反相关网站的服务条款和法律法规。以下内容仅供学习和了解技术原理之用,不鼓励或支持任何违反规定的行为。 在Python中编写大麦网抢票脚本通常涉及以下几个步骤: ### 1. 分析网站结构 - 使用浏览器的开发者工具(如Chrome的Inspect功能)

    2024年04月12日
    浏览(39)
  • Python制作【大麦网】自动抢票程序_python大麦抢票

    大麦网,是中国综合类现场娱乐票务营销平台,业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域。 但是因为票数有限,还有黄牛们不能丢了饭碗,所以导致了,很多人都抢不到票 那么,今天带大家用Python来制作一个自动抢票的脚本小程序 面向对象编程 selenium 操作浏览器

    2024年04月12日
    浏览(36)
  • Python制作【大麦网】自动抢票程序

    大麦网,是中国综合类现场娱乐票务营销平台,业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域。 但是因为票数有限,还有黄牛们不能丢了饭碗,所以导致了,很多人都抢不到票 那么,今天带大家用Python来制作一个自动抢票的脚本小程序 面向对象编程 selenium 操作浏览器

    2024年02月04日
    浏览(46)
  • appium移动端python大麦网抢票

    使用appium不是一个很好的选择,而且也不一定能抢到票,由于没有学习逆向工程,所以这个只能使用这个框架,这个框架在界面中有轮播,播放的情况下,定位元素会十分慢,但是我周围的人确实能够手工抢到票,做这个的意义就是省去人工操作,最后提升下我的技能。

    2024年02月17日
    浏览(45)
  • Python 使用selenium 实现大麦网自动购票

    前言 大麦网是中国综合类现场娱乐票务营销平台,业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域 今天,我们要用代码来实现他的购票过程 知识点: 面向对象编程 selenium 操作浏览器 pickle 保存和读取Cookie实现免登陆 time 做延时操作 os 创建文件,判断文件是否存在 开发环

    2023年04月11日
    浏览(39)
  • python爬虫(三)12306自动抢票--- selenium

    一、 二 、 python爬虫入门篇 https://blog.csdn.net/weixin_64050468/article/details/130583771?spm=1001.2014.3001.5501 文章目录 前言 一、按照selenuim模块+配置+可能报错解释 二、selenium部分代码解读  三、开始操作 抢票代码 爬取数据代码 后面文章主打用爬虫整活了 边学边玩 win + r 打开cmd 然后输入

    2024年02月08日
    浏览(47)
  • Python selenium 简单的实现大麦网自动购票过程

    大麦网是中国综合类现场娱乐票务营销平台,业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域 今天,我们要用代码来实现他的购票过程 先来看看完成后的效果是怎么样的 开发环境 版 本:anaconda(python3.8.8) 编辑器:pycharm 代码实现步骤 实现免登陆 选座并且下单 初始化加

    2023年04月14日
    浏览(39)
  • Python制作【大麦网】抢票程序,看演唱会再也不怕没票了

    大麦网,是中国综合类现场娱乐票务营销平台,业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域。 但是因为票数有限,还有黄牛们不能丢了饭碗,所以导致了,很多人都抢不到票 那么,今天带大家用Python来制作一个自动抢票的脚本小程序 面向对象编程 selenium 操作浏览器

    2024年02月05日
    浏览(58)
  • 周杰伦演唱会总是抢不到票?教你用Python做一个自动抢票脚本!

    相信想去周董演唱会的大家都用过大麦网抢票吧? 可是 抢不到啊 该说不说 我抢到了 那么,今天带大家用Python来制作一个自动抢票的脚本小程序! 知识点: 面向对象编程 selenium 操作浏览器 pickle 保存和读取Cookie实现免登陆 time 做延时操作 os 创建文件,判断文件是否存在 开

    2024年02月04日
    浏览(54)
  • 大麦抢票-Appium实现抢票软件

    环境介绍:Python 3.9.1 自行下载appium和相关依赖 本代码是无聊写的,运行也正常,但是就是抢不到,抢票需要天时,地利,人和,不要用UI最好 我链接的是夜神虚拟模拟器 特此说明:所有的UI自动化抢票以个人见解,95%往上抢不到票

    2024年02月12日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包