2023.04.22更新大麦网移动端/M端抢购软件和使用教程

您所在的位置:网站首页 抢票软件演唱会 2023.04.22更新大麦网移动端/M端抢购软件和使用教程

2023.04.22更新大麦网移动端/M端抢购软件和使用教程

2023-05-29 09:18| 来源: 网络整理| 查看: 265

文章目录 前言新的解决方案订阅须知早期代码

前言

近期发现大麦网页端抢购页面悄然发生变化,之前可以在页面选择票价、档次,并且点击按钮进行购票,现在不行了,并且有些票只能在APP端购买,因此针对性编写了代码来适配。

新的解决方案

新的代码中首先进行了如下改造。

构造下单地址。之前是需要在购票地址页面点击按钮进行跳转,现在是利用接口获取到票务信息,直接构造下单地址,速度反而变得更快些。优化下单速度,比之前大幅提升下单速度。提供了自动选座功能支持同一场次多张观影人支持捡漏 订阅须知 订阅后,仅可以获取软件使用,不提供源代码,源代码另外出售。 早期代码 def enter_concert(self): print(u'###打开浏览器,进入大麦网###') if not exists('cookies.pkl'): # 如果不存在cookie.pkl,就获取一下 self.driver = webdriver.Chrome(executable_path=self.driver_path) self.get_cookie() print(u'###成功获取Cookie,重启浏览器###') self.driver.quit() options = webdriver.ChromeOptions() # 禁止图片、js、css加载 prefs = {"profile.managed_default_content_settings.images": 2, "profile.managed_default_content_settings.javascript": 1, 'permissions.default.stylesheet': 2} options.add_experimental_option("prefs", prefs) # 更换等待策略为不等待浏览器加载完全就进行下一步操作 capa = DesiredCapabilities.CHROME capa["pageLoadStrategy"] = "none" self.driver = webdriver.Chrome(executable_path=self.driver_path, options=options, desired_capabilities=capa) # 登录到具体抢购页面 self.login() self.driver.refresh() try: # 等待nickname出现 locator = (By.XPATH, "/html/body/div[1]/div/div[3]/div[1]/a[2]/div") WebDriverWait(self.driver, 5, 0.3).until(EC.text_to_be_present_in_element(locator, self.nick_name)) self.status = 1 print(u"###登录成功###") self.time_start = time() except: self.status = 0 self.driver.quit() raise Exception(u"***错误:登录失败,请删除cookie后重试***") # 获取账号的cookie信息 def get_cookie(self): self.driver.get(self.damai_url) print(u"###请点击登录###") self.driver.find_element_by_class_name('login-user').click() while self.driver.title.find('大麦网-全球演出赛事官方购票平台') != -1: # 等待网页加载完成 sleep(1) print(u"###请扫码登录###") while self.driver.title == '大麦登录': # 等待扫码完成 sleep(1) dump(self.driver.get_cookies(), open("cookies.pkl", "wb")) print(u"###Cookie保存成功###") def login(self): print(u'###开始登录###') self.driver.get(self.target_url) WebDriverWait(self.driver, 10, 0.1).until(EC.title_contains('大麦网')) self.set_cookie() def check_order(self): if self.status in [3, 4, 5]: if self.real_name is not None: print(u"###等待--确认订单--页面出现,可自行刷新,若长期不跳转可选择-- CRTL+C --重新抢票###") try: tb = WebDriverWait(self.driver, 1, 0.1).until(EC.presence_of_element_located((By.XPATH, '/html/body/div[3]/div[2]/div'))) except: raise Exception(u"***Error:实名信息选择框没有显示***") print(u'###开始确认订单###') print(u'###选择购票人信息,可手动帮助点击###') init_sleeptime = 0.0 Labels = tb.find_elements_by_tag_name('label') # 防止点击过快导致没有选择多个人 while True: init_sleeptime += 0.1 true_num = 0 for num_people in self.real_name: tag_input = Labels[num_people-1].find_element_by_tag_name('input') if tag_input.get_attribute('aria-checked') == 'false': sleep(init_sleeptime) tag_input.click() else: true_num += 1 if true_num == len(self.real_name): break print("本次抢票时间:", time()-self.time_start) self.driver.find_element_by_xpath('/html/body/div[3]/div[2]/div/div[9]/button').click() # 同意以上协议并提交订单 else: self.driver.find_element_by_xpath('/html/body/div[2]/div[2]/div/div[8]/button').click() # 判断title是不是支付宝 print(u"###等待跳转到--付款界面--,可自行刷新,若长期不跳转可选择-- CRTL+C --重新抢票###") try: WebDriverWait(self.driver, 3600, 0.1).until(EC.title_contains('支付宝')) except: raise Exception(u'***Error: 长期跳转不到付款界面***')


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3