首页 > 其他分享 >丹摩征文活动|丹摩助力selenium实现大麦网抢票

丹摩征文活动|丹摩助力selenium实现大麦网抢票

时间:2024-11-17 11:17:35浏览次数:3  
标签:丹摩 征文活动 self driver cookie print div ### selenium

丹摩征文活动|丹摩助力selenium实现大麦网抢票

1.引言

在人工智能飞速发展的今天,丹摩智算平台(DAMODEL)以其卓越的AI算力服务脱颖而出,为开发者提供了一个简化AI开发流程的强大工具。通过租赁GPU资源,丹摩智算平台使得机器学习和深度学习项目的开发变得更加高效和便捷。本文将详细介绍如何在丹摩智算平台上部署和使用selenium实现大麦网抢票

1.1背景

丹摩智算平台以其用户友好的界面和强大的技术支持,成为AI开发者的首选。它不仅提供了高性能的计算资源,还通过各种优惠活动吸引用户,进一步降低了AI开发的门槛。

1.2访问与登录

  • 访问地址丹摩智算平台官网

  • 访问平台:使用支持的浏览器,如Edge/Chrome打开丹摩智算平台官网。

  • 用户登录:输入账号和密码登录。如果是首次使用,请先完成注册并完善个人信息。

请添加图片描述

1.3本次项目架构设计图

在这里插入图片描述

2.部署与使用

2.1.创建项目

  • 登录后,点击GPU云实例。

  • 创建实例:点击“创建实例”。
    在这里插入图片描述

  • 资源选择:选择适用的计算资源类型(如 CPU、GPU、内存需求等)。

由于我们这里选择3090 显卡,硬盘选择默认的 100GB 系统盘和 50GB 数据盘。
在这里插入图片描述

  • 镜像选择: PyTorch(PyTorch2.3.0,Ubuntu-22.04,CUDA12.1 版本)镜像。

在这里插入图片描述

  • 密钥对:创建并绑定密钥对,最后启动。

在这里插入图片描述

  • 进入 JupyterLab

在这里插入图片描述

  • 打开终端

在这里插入图片描述

2.2环境配置

导入selenium库:

pip install selenium

2.4开始运行

在这里插入图片描述

相关main.py代码:

import os
import time
import pickle
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By

# 抢票相关页面
# 大麦网主页
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.home.card_0.ditem_1.2bbb23e1uo54LV&id=853329221023'

# 定义具体类
class Concert:
    def __init__(self):
        self.status = 0         # 状态,表示如今进行到何种程度
        self.login_method = 1   # {0:模拟登录,1:Cookie登录}自行选择登录方式
        self.driver = webdriver.Chrome()       # 默认Chrome浏览器
        self.execute_stealth_script(self)  # 执行stealth脚本

    # 执行stealth脚本
    # 机器检测问题,使用的driver会被识别为机器人,无法欺骗到检测程序,这里我们使用stealth.min.js进行解决。
    @staticmethod
    def execute_stealth_script(self):
        with open('stealth.min.js', 'r') as f:
            js = f.read()
            self.driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': js})
            print('###已执行stealth脚本###')

    # 通过cookie进行登陆
    # 在Concert类中login_method = 1时才会使用到,便于快速登陆,省去登陆过程,其中初次运行代码时,用户登陆后会在本地生成cookies.pkl文件来存储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)


    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("###登录成功###")


    # 选择票型
    def choose_ticket(self):
        if self.status == 2:                  #登录成功入口
            print("="*30)
            print("###检查是否开始售票###")
            # while not self.isElementExistByClass('buy-link'):
            #     self.driver.refresh()
            #     print("###售票尚未开始,刷新等待开始###")
            # TODO 选择票型
            #========begin=========
            # 选择具体票型部分未写,该部分可自行添加,不添加的话,自行选择进入页面后大麦的默认选择。
            #========end===========
            self.driver.find_element(By.CLASS_NAME, 'buybtn').click()    #点击购票二维码下的购买连接
            time.sleep(1.5)
            self.check_order()

    # 确认订单
    def check_order(self):
        if self.status == 2:
            print('###开始确认订单###')
            if self.driver.title == '订单确认页':
                print('###检查是否需要填写观影人')
                # if self.isElementExistByXPATH('//*[@id="dmViewerBlock_DmViewerBlock"]'):
                #     self.driver.find_element(By.XPATH, '//*[@id="dmViewerBlock_DmViewerBlock"]/div[2]/div/div').click()
                #     time.sleep(0.5)
                # time.sleep(60)
                print('###跳转支付选择界面###')
                self.driver.find_element(By.XPATH, '//*[@id="dmOrderSubmitBlock_DmOrderSubmitBlock"]/div[2]/div/div[2]/div[2]/div[2]/span').click()
                time.sleep(2)
                self.pay_order()

    # 支付宝登陆支付
    def pay_order(self):
        if self.driver.title == "支付宝付款":
            print('###支付订单###')
            time.sleep(60)
            self.driver.find_element(By.XPATH, '//*[@id="app"]/div[3]/div[1]/button[2]').click()
            print('###跳转至浏览器支付###')
            time.sleep(1.5)
            self.driver.find_element(By.XPATH, '//*[@id="app"]/div[3]/div/div[1]/div[2]/input').clear()
            self.driver.find_element(By.XPATH, '//*[@id="app"]/div[3]/div/div[1]/div[2]/input').send_keys('支付宝账号')      #输入支付宝账号
            self.driver.find_element(By.XPATH, '//*[@id="app"]/div[3]/div/button').click()
            time.sleep(1.5)
            self.driver.find_element(By.XPATH, '//*[@id="app"]/div[2]/button').click()
            while True:
                time.sleep(1)
                print('###请输入支付密码###')

    # 脚本结束退出
    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()

2.5代码结果

成功实现大麦网抢票

在这里插入图片描述

2.6代码架构设计图

在这里插入图片描述

通过本文的详细指南,您可以轻松地在丹摩智算平台上部署和使用selenium实现大麦网抢票。

3.总结

本文旨在指导读者如何在丹摩智算平台(DAMODEL)上部署和使用Selenium进行大麦网抢票。丹摩智算平台以其强大的AI算力服务和用户友好的界面,成为AI开发者的首选,降低了AI开发的门槛。文章首先介绍了丹摩智算平台的背景和如何访问登录,然后详细阐述了项目的架构设计,并逐步指导用户创建项目、选择资源、配置环境以及部署Selenium代码。

在部署与使用部分,文章提供了创建GPU云实例的步骤,包括资源选择、镜像选择和密钥对的创建。接着,通过Python代码展示了如何使用Selenium进行大麦网的抢票操作,包括登录、选择票型、确认订单和支付等环节。代码中包含了详细的注释,便于读者理解和学习。文章还提供了代码运行结果的截图,以及代码架构设计图,帮助读者更直观地理解整个抢票流程。

为了提高文章的质量,建议增加目标读者的明确性,提供更多关于丹摩智算平台的背景信息,确保步骤说明的清晰性和截图的准确性。同时,保持专业术语的准确性,确保语言风格的一致性,并进行彻底的校对以避免语法和拼写错误。最后,确保所有外部链接的有效性,以提升文章的实用性和可信度。通过这些改进,文章将更加专业、易于理解,为读者提供实用的大麦网抢票指南。

标签:丹摩,征文活动,self,driver,cookie,print,div,###,selenium
From: https://blog.csdn.net/lwcwam/article/details/143828142

相关文章

  • 丹摩征文活动|FLUX.1+ComfyUI部署与使用
    丹摩征文活动|FLUX.1+ComfyUI部署与使用1.引言在人工智能飞速发展的今天,丹摩智算平台(DAMODEL)以其卓越的AI算力服务脱颖而出,为开发者提供了一个简化AI开发流程的强大工具。通过租赁GPU资源,丹摩智算平台使得机器学习和深度学习项目的开发变得更加高效和便捷。本文将详细介绍......
  • python自动化之selenium 封装
    fromseleniumimportwebdriverfromtimeimportsleepclasscms(object):definit(self):passdefdl(self):self.dx=webdriver.Chrome()self.dx.get("http://cms.duoceshi.cn/manage/login.do")self.dx.find_element_by_name("userAccount&qu......
  • 自动化测试环境配置-selenium库和谷歌浏览器版(离线安装)
    环境下载链接:https://pan.baidu.com/s/1acJJrA087zf_e02at3hoUg?pwd=f83d提取码:f83d 第一步,取消谷歌浏览器的自动升级 再去控制面板卸载原来的谷歌浏览器 第二步,安装谷歌浏览器80版本 通过设置查看版本号,该版本是不会自动升级的 第三步:直接使用下载好的驱动......
  • 自动化测试环境配置-selenium库和谷歌浏览器版
    浏览器和插件下载地址:通过网盘分享的文件:自动化测试安装包链接:https://pan.baidu.com/s/1acJJrA087zf_e02at3hoUg提取码:f83d第一步,取消谷歌浏览器的自动升级  再去控制面板卸载原来的谷歌浏览器  第二步,安装谷歌浏览器80版本  通过设置查看版本号,该版本是不会......
  • 第八课 Python自动化之selenium
    python+seleniumselenium是一个第三方库,python有很多库;1、什么是ui自动化?通过模拟手工操作用户ui页面的方式,用代码去实现自动化操作和验证的行为。2、ui自动化的优点?(1)解决重复性的功能测试和验证(2)减少测试人员在回归测试时用例漏测和验证点的漏测(3)减少冒烟测试,回归测试的......
  • python自动化之selenium
    python+seleniumselenium是一个第三方库,python有很多库;1、什么是ui自动化?通过模拟手工操作用户ui页面的方式,用代码去实现自动化操作和验证的行为。2、ui自动化的优点?(1)解决重复性的功能测试和验证(2)减少测试人员在回归测试时用例漏测和验证点的漏测(3)减少冒烟测试,回归测试的......
  • 丹摩征文活动|丹摩智算平台使用指南
    目录1.登录平台与工作环境设置1.1访问与登录1.2创建或选择项目1.3初始化项目环境2.数据上传与管理2.1数据上传2.2数据管理与预处理2.3数据可视化3.模型构建与训练3.1模型选择3.2参数配置3.3模型训练与评估4.模型部署与应用4.1模型部署4.2接口调用与集......
  • 丹摩征文活动|Llama 3.1 开源模型快速部署:从零到上线
    文章目录一、Llama3.1系列的演进与发展历程二、大型语言模型的力量:Llama3.1405B三、Llama3.1405B部署教程四、Llama3.1在客户服务中的运用一、Llama3.1系列的演进与发展历程自开源LLM(大语言模型)兴起以来,Meta公司凭借其Llama系列逐步在全球AI领域占据重......
  • 丹摩征文活动|FLUX.1+ComfyUI高效部署策略与实践
    ......
  • 丹摩征文活动|Llama3.1的部署与使用指南
    ......