Python 使用selenium 实现大麦网自动购票

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

前言

大麦网是中国综合类现场娱乐票务营销平台,业务覆盖演唱会、 话剧、音乐剧、体育赛事等领域

今天,我们要用代码来实现他的购票过程

Python 使用selenium 实现大麦网自动购票

知识点:

面向对象编程

selenium 操作浏览器

pickle 保存和读取Cookie实现免登陆

time 做延时操作

os 创建文件,判断文件是否存在

开发环境

  • 版 本:anaconda(python3.8.8)

  • 编辑器:pycharm

代码实现步骤

  • 实现免登陆

  • 选座并且下单

需要 源码 . 素材 . 点击领取即可

实现免登陆
damai_url = 'https://www.damai.cn/'

登录

login_url = 'https://passport.damai.cn/login?ru=https%3A%2F%2Fwww.damai.cn%2F'

抢票目标页

target_url = 'https://detail.damai.cn/item.htm?spm=a2oeg.search_category.0.0.6ee64d156yMCV9&id=672706937093&clicktitle=%E7%95%99%E5%A3%B0%E7%8E%A9%E5%85%B72022%E3%80%8C%E6%97%B6%E9%97%B4%E7%9A%84%E8%B7%A8%E5%BA%A6%E3%80%8D%E5%B7%A1%E6%BC%94Vol%C2%B71%20%E9%95%BF%E6%B2%99%E7%AB%99'

初始化加载

from selenium import webdriver  # 操作浏览器的工具

def __init__(self):
    self.status = 0   # 状态, 表示当前操作执行到了哪个步骤
    self.login_method = 1  # {0:模拟登录, 1:cookie登录}自行选择登录的方式
    self.driver = webdriver.Chrome(executable_path='chromedriver.exe')  # 当前浏览器驱动对象

登录

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_cookies()             # 没有文件的情况下, 登录一下
        else:
            self.driver.get(target_url)  # 跳转到抢票页
            self.get_cookie()           # 并且登录

cookies: 登录网站时出现的

import time       

def set_cookies(self):
    self.driver.get(damai_url)
    print('###请点击登录###')

我没有点击登录,就会一直延时在首页, 不会进行跳转

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

没有登录成功

    while self.driver.title != '大麦网-全球演出赛事官方购票平台-100%正品、先付先抢、在线选座!':
        sleep(1)
    print('###扫码成功###')
    # get_cookies: driver里面的方法
    pickle.dump(self.driver.get_cookies(), open('cookies.pkl', 'wb'))
    print('###cookie保存成功###')
    self.driver.get(target_url)

假如说我现在本地有 cookies.pkl 那么 直接获取

def get_cookie(self):
    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###')

运行代码可以得到所需要的cookis,这样就可以实现免登录

打开浏览器

def enter_concert(self):
    print('###打开浏览器,进入大麦网###')

调用登录

    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 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)  # 刷新页面 继续执行操作


点击立即预定

                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('正在加载.......')

如果当前购票人信息存在 就点击

                    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('//*[@id="container"]/div/div[9]/button').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 finish(self):
    self.driver.quit()

效果展示

Python 使用selenium 实现大麦网自动购票

尾语

好啦,本文章到这里就结束拉

有喜欢的小伙伴记得给博主一个三连哦~

希望你在学习的路上不忘初心,坚持不懈,学有所成

把时间和精力,放在自己擅长的方向,去坚持与努力,

如果不知道自己擅长什么,就尽快找到它。

Python 使用selenium 实现大麦网自动购票文章来源地址https://www.toymoban.com/news/detail-410704.html

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

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

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

相关文章

  • 基于selenium的大麦网自动抢票脚本

    先配置webdriver   记录cookie,设置免密登录  购票页面下单   选择座位+选择场次,票档(因为检索是否需要选择座位要浪费点时间,所以直接写了两个方法,看着选)   不用选择座位,直接选择给场次票档和数量 提交订单   购票页面点击加票按钮  判断XPATH是否存在   页

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

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

    2024年04月12日
    浏览(33)
  • 使用Python+selenium实现第一个自动化测试脚本

    这篇文章主要介绍了使用Python+selenium实现第一个自动化测试脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 最近在学web自动化,记录一下学习过程。 此处我选用python3.6+selenium3.0,均用

    2024年02月03日
    浏览(57)
  • Python Selenium实现自动化测试及Chrome驱动使用!

    本文将介绍如何使用Python Selenium库实现自动化测试,并详细记录了Chrome驱动的使用方法。 通过本文的指导,读者将能够快速上手使用Python Selenium进行自动化测试。 并了解如何配置和使用Chrome驱动来实现更高效的自动化测试。 一、Python Selenium简介 Python Selenium是一个用于Web应用

    2024年03月10日
    浏览(65)
  • Python Selenium实现自动化测试及Chrome驱动使用

    本文将介绍如何使用 Python   Selenium 库实现 自动化测试 ,并详细 记录 了Chrome驱动的使用方法。 通过本文的指导,读者将能够快速上手使用Python Selenium进行自动化测试。 并了解如何配置和使用Chrome驱动来实现更高效的自动化测试。 一、Python Selenium简介 Python Selenium是一个用于

    2024年02月03日
    浏览(60)
  • Python制作【大麦网】自动抢票程序

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

    2024年02月04日
    浏览(44)
  • Python使用Selenium自动实现表单填写之龙年纪念币预约

    声明 :本文只做技术交流,不可用代码为商业用途,文末有源码下载,已测试可用。 Part 1 配置文件改写(源码 有详细的注释说明 读取配置文件,自己组数据库,录入信息 配置文件 Part 2 主函数 每一期的xpath路径都不一样 所以需要提前去网站获取 新的 Xpath 具体方法如下

    2024年02月01日
    浏览(73)
  • Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)(1)

    browser.find_element_by_xpath(‘.//ul[@id=“headerNav”]/li[4]’).click() 8.点击群管理之后,进入群管理界面,我们需要的是成员管理 WebDriverWait(browser, 1000).until( EC.presence_of_all_elements_located( (By.CLASS_NAME, ‘color-tit’) ) ) browser.find_element_by_class_name(‘color-tit’).click() 9.点击成员管理之后会重新

    2024年04月28日
    浏览(45)
  • Python使用Selenium自动实现表单填写之龙年纪念币预约(附源码,源码有注释解析,已测试可用

    声明 :本文只做技术交流,不可用代码为商业用途,文末有源码下载,已测试可用。 Part 1 配置文件改写(源码 有详细的注释说明 读取配置文件,自己组数据库,录入信息 配置文件 Part 2 主函数 每一期的xpath路径都不一样 所以需要提前去网站获取 新的 Xpath 具体方法如下

    2024年02月01日
    浏览(40)
  • Python 自动化指南(繁琐工作自动化)第二版:零、前言

    Al Sweigart 是一名软件开发人员和技术书籍作者。Python 是他最喜欢的编程语言,他是该语言的几个开源模块的开发者。他的其他书籍可以在他的网站上根据知识共享许可免费获得。他的猫现在重 11 磅。 Philip James 从事 Python 工作已经超过十年,是 Python 社区的常客。他的演讲主

    2023年04月08日
    浏览(66)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包