首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 汽车 游戏 社会热点 开源推荐 医疗健康 归档 标签 关于

脚本难题,请指教,如何解决这个问题?

摘要

求大佬指教。最近写了一个网站的抢购脚本,但是感觉抢购速度没有别人的快,网页上的按钮没有接口只能模拟人操作,网站导出来的文件有几万行。 速度还有提升的空间吗或者如何改进让抢购速度提高? def selenium_upload(self, brand='AD'): if not self.driver: try: self.init_driver(brand) except Exception as ...

self driver logger try target_url info time sleep except mus
2026-08-09 1 阅读 约10分钟阅读 大圣
分享:
字号:
求大佬指教。但是最近写了一个网站的抢购脚本,感觉抢购速度没有别人的快,网页上的按钮没有接口只能模拟人操作,网站导出来的文件有几万行。还有提升的空间吗或者如何改进让抢购提高速度? def selenium_upload(self,brand='AD'): if not self.driver: try: self.init_driver(brand) except Exception as e: logger.error(f"初始化驱动失败: {e}") return False else: # ---------- 清理残留弹窗 ---------- try: modal = self.driver.find_element(By.XPATH, '//div[contains(@class, "ant-modal")]') if modal.is_displayed(): logger.info("检测到残留弹窗,尝试关闭") cancel_btn = self.driver.find_element(By.XPATH, '//button[contains(text(), "取消")]') cancel_btn.click() time.sleep(0.5) except: pass # 无弹窗则忽略 # ---------- 刷新页面清除状态 ---------- target_url = 'https://ty-osm.belle.net.cn/mus/#/mus/trash/apply' if self.driver.current_url != target_url: self.driver.get(target_url) else: self.driver.refresh() time.sleep(0.5) #确保在MAX申请页面 target_url = 'https://ty-osm.belle.net.cn/mus/#/mus/trash/apply' if self.driver.current_url != target_url: self.driver.get(target_url) logger.info("加载MAX申请页面...") time.sleep(2) # 等待taskType出现 try: WebDriverWait(self.driver, 3, poll_Frequency=0.1).until( EC.presence_of_element_ located((By.ID, 'taskType')) ) logger.info("页面已加载,taskType") except: logger.warning("taskType不存在,刷新页面") self.driver.refresh() time.sleep(2) WebDriverWait(self.driver, 3, poll_Frequency=0.1).until( EC.presence_of_element_ located((By.ID, 'taskType')) ) batch_text = self.config[brand]['BATCH_TEXT'] #默认未确认confirm_clicked = False try: # ---------- 1.选择供货类型(增强展开逻辑) ---------- from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.keys 导入键 task_input = WebDriverWait(self.driver, 1, poll_Frequency=0.1).until( EC.presence_of_element_ located((By.ID, 'taskType')) ) 选择器 = task_input.find_element(By.XPATH, "./ancestor::div[contains(@class, 'ant-select-selector')]")尝试:selector.click() logger.info("已点击供货类型下拉框(点击对接)") except: ActionChains(self.driver).move_to_element(selector).click().perform() logger.info("已点击供货类型下拉框(ActionChains)") time.sleep(0.5) 尝试:supply_option = WebDriverWait(self.driver, 1, poll_Frequency=0.1).until( EC.element_to_be_clickable( (By.XPATH, '//div[contains(@class, "ant-select-item") and contains(text(), "长供")]')) ) Supply_option.click() logger.info("已选择供货类型:长供(点击选项)") except: logger.warning("下拉选项未出现,尝试键盘操作") task_input.send_keys(Keys.ARROW_DOWN) time.sleep(0.3)found = False for _ in range(5): try: active = self.driver.find_element(By.XPATH, '//div[contains(@class, "ant-select-item-option-active")]') if "长供" in active.text: active.click() logger.info("已选择供应类型:长供(键盘导航)") found = True 中断 else: task_input.send_keys(Keys.ARROW_DOWN) time.sleep(0.2) except: task_input.send_keys(Keys.ARROW_DOWN) time.sleep(0.2) 如果未找到:task_input.send_keys(Keys.ENTER) logger.warning("未定位到长供,按回车选择当前项") time.sleep(0.5) # ---------- 2.选择批量(输入搜索选择) ---------- batch_input = WebDriverWait(self.driver, 1, poll_Frequency=0.1).until( EC.presence_of_element_ located((By.ID, 'yearMonth')) ) batch_input.click() logger.info("已点击批次下拉框") time.sleep(0.3) batch_input.clear() batch_input.send_keys(b
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱