OpenClaw技能开发进阶为Qwen3-32B-Chat添加Selenium控制能力1. 为什么需要Web自动化技能去年我在做电商价格监控时发现手动比价效率太低。当时尝试过各种爬虫方案但遇到动态加载和验证码就束手无策。直到发现OpenClaw可以通过Selenium实现浏览器自动化才真正解决了这个痛点。传统爬虫和OpenClaw自动化最大的区别在于前者是数据抓取工具后者是模拟人类操作的智能体。比如京东的商品价格经常通过前端脚本动态渲染普通爬虫很难获取而OpenClaw配合Selenium可以像真人一样操作浏览器获取完整数据。2. 开发环境准备2.1 基础环境配置我的开发环境是Ubuntu 22.04已经部署了Qwen3-32B-Chat模型。建议先确保以下组件就绪# 检查Python环境 python3 --version # 需要3.8 pip3 list | grep openclaw # 确认已安装openclaw-sdk # 安装Selenium pip3 install selenium webdriver-manager2.2 浏览器驱动方案选择Selenium需要浏览器驱动我测试过三种方案本地ChromeChromedriver最稳定但需要手动管理版本WebDriver Manager自动下载驱动但国内网络可能超时Docker化方案适合生产环境但开发调试不便最终选择方案2并添加阿里云镜像源加速from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import Service service Service(ChromeDriverManager( urlhttps://npm.taobao.org/mirrors/chromedriver, latest_release_urlhttps://npm.taobao.org/mirrors/chromedriver/LATEST_RELEASE ).install()) driver webdriver.Chrome(serviceservice)3. 核心技能开发3.1 基础操作封装创建web_automation.py文件先实现基础操作类from openclaw.skill import BaseSkill from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC class WebAutomationSkill(BaseSkill): def __init__(self): self.driver None self.timeout 10 def open_browser(self, url): if not self.driver: self.driver webdriver.Chrome(serviceservice) self.driver.get(url) return f已打开{url} def click_element(self, xpath): element WebDriverWait(self.driver, self.timeout).until( EC.element_to_be_clickable((By.XPATH, xpath)) ) element.click() return 点击成功 def get_text(self, xpath): element WebDriverWait(self.driver, self.timeout).until( EC.presence_of_element_located((By.XPATH, xpath)) ) return element.text3.2 验证码处理方案遇到验证码时我采用人工干预自动重试的混合策略def handle_captcha(self, retry3): for i in range(retry): if captcha in self.driver.page_source.lower(): print(请手动完成验证码后输入Y继续:) if input().lower() y: return True else: return True return False更复杂的项目可以集成第三方打码平台但个人使用这种方案最简单可靠。4. 京东价格监控实战4.1 商品页面解析京东价格元素通常有几种定位方式def get_jd_price(self, sku_id): url fhttps://item.jd.com/{sku_id}.html self.open_browser(url) # 尝试多种价格选择器 selectors [ //span[classprice J-p-100008348315], # 常规价格 //div[classsummary-price J-summary-price], # 促销价 //div[classdd]/span[classp-price] # 秒杀价 ] for selector in selectors: try: price self.get_text(selector) if price: return float(price.strip().replace(¥,)) except: continue return None4.2 定时任务集成将监控逻辑封装为OpenClaw可调用的技能skill_action(namejd_price_monitor) def price_monitor(self, sku_ids: list, interval: int 3600): results {} for sku in sku_ids: price self.get_jd_price(sku) results[sku] price time.sleep(5) # 避免触发反爬 # 保存结果到CSV df pd.DataFrame.from_dict(results, orientindex) df.to_csv(fjd_prices_{datetime.now().strftime(%Y%m%d)}.csv) return 监控完成5. 技能打包与部署5.1 依赖管理创建setup.py确保依赖正确安装from setuptools import setup setup( nameopenclaw-web-automation, version0.1, install_requires[ selenium4.0, webdriver-manager3.0, pandas1.3 ], entry_points{ openclaw.skills: [ web_automation web_automation:WebAutomationSkill ] } )5.2 私有技能安装开发完成后可以通过两种方式安装# 本地安装 pip3 install -e . # 发布到私有仓库 python3 setup.py sdist twine upload --repository-url http://your-pypi dist/*6. 调试与优化心得在开发过程中有几个关键发现XPath稳定性京东等网站经常改版建议同时维护多套选择器超时设置移动网络环境下需要适当延长WebDriverWait超时内存泄漏长期运行的Selenium实例需要定期重启验证码策略凌晨时段验证码出现频率较低最有效的调试方式是结合浏览器开发者工具和OpenClaw的日志输出tail -f ~/.openclaw/logs/skill_web_automation.log获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。
OpenClaw技能开发进阶:为Qwen3-32B-Chat添加Selenium控制能力
发布时间:2026/6/3 21:55:04
OpenClaw技能开发进阶为Qwen3-32B-Chat添加Selenium控制能力1. 为什么需要Web自动化技能去年我在做电商价格监控时发现手动比价效率太低。当时尝试过各种爬虫方案但遇到动态加载和验证码就束手无策。直到发现OpenClaw可以通过Selenium实现浏览器自动化才真正解决了这个痛点。传统爬虫和OpenClaw自动化最大的区别在于前者是数据抓取工具后者是模拟人类操作的智能体。比如京东的商品价格经常通过前端脚本动态渲染普通爬虫很难获取而OpenClaw配合Selenium可以像真人一样操作浏览器获取完整数据。2. 开发环境准备2.1 基础环境配置我的开发环境是Ubuntu 22.04已经部署了Qwen3-32B-Chat模型。建议先确保以下组件就绪# 检查Python环境 python3 --version # 需要3.8 pip3 list | grep openclaw # 确认已安装openclaw-sdk # 安装Selenium pip3 install selenium webdriver-manager2.2 浏览器驱动方案选择Selenium需要浏览器驱动我测试过三种方案本地ChromeChromedriver最稳定但需要手动管理版本WebDriver Manager自动下载驱动但国内网络可能超时Docker化方案适合生产环境但开发调试不便最终选择方案2并添加阿里云镜像源加速from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import Service service Service(ChromeDriverManager( urlhttps://npm.taobao.org/mirrors/chromedriver, latest_release_urlhttps://npm.taobao.org/mirrors/chromedriver/LATEST_RELEASE ).install()) driver webdriver.Chrome(serviceservice)3. 核心技能开发3.1 基础操作封装创建web_automation.py文件先实现基础操作类from openclaw.skill import BaseSkill from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC class WebAutomationSkill(BaseSkill): def __init__(self): self.driver None self.timeout 10 def open_browser(self, url): if not self.driver: self.driver webdriver.Chrome(serviceservice) self.driver.get(url) return f已打开{url} def click_element(self, xpath): element WebDriverWait(self.driver, self.timeout).until( EC.element_to_be_clickable((By.XPATH, xpath)) ) element.click() return 点击成功 def get_text(self, xpath): element WebDriverWait(self.driver, self.timeout).until( EC.presence_of_element_located((By.XPATH, xpath)) ) return element.text3.2 验证码处理方案遇到验证码时我采用人工干预自动重试的混合策略def handle_captcha(self, retry3): for i in range(retry): if captcha in self.driver.page_source.lower(): print(请手动完成验证码后输入Y继续:) if input().lower() y: return True else: return True return False更复杂的项目可以集成第三方打码平台但个人使用这种方案最简单可靠。4. 京东价格监控实战4.1 商品页面解析京东价格元素通常有几种定位方式def get_jd_price(self, sku_id): url fhttps://item.jd.com/{sku_id}.html self.open_browser(url) # 尝试多种价格选择器 selectors [ //span[classprice J-p-100008348315], # 常规价格 //div[classsummary-price J-summary-price], # 促销价 //div[classdd]/span[classp-price] # 秒杀价 ] for selector in selectors: try: price self.get_text(selector) if price: return float(price.strip().replace(¥,)) except: continue return None4.2 定时任务集成将监控逻辑封装为OpenClaw可调用的技能skill_action(namejd_price_monitor) def price_monitor(self, sku_ids: list, interval: int 3600): results {} for sku in sku_ids: price self.get_jd_price(sku) results[sku] price time.sleep(5) # 避免触发反爬 # 保存结果到CSV df pd.DataFrame.from_dict(results, orientindex) df.to_csv(fjd_prices_{datetime.now().strftime(%Y%m%d)}.csv) return 监控完成5. 技能打包与部署5.1 依赖管理创建setup.py确保依赖正确安装from setuptools import setup setup( nameopenclaw-web-automation, version0.1, install_requires[ selenium4.0, webdriver-manager3.0, pandas1.3 ], entry_points{ openclaw.skills: [ web_automation web_automation:WebAutomationSkill ] } )5.2 私有技能安装开发完成后可以通过两种方式安装# 本地安装 pip3 install -e . # 发布到私有仓库 python3 setup.py sdist twine upload --repository-url http://your-pypi dist/*6. 调试与优化心得在开发过程中有几个关键发现XPath稳定性京东等网站经常改版建议同时维护多套选择器超时设置移动网络环境下需要适当延长WebDriverWait超时内存泄漏长期运行的Selenium实例需要定期重启验证码策略凌晨时段验证码出现频率较低最有效的调试方式是结合浏览器开发者工具和OpenClaw的日志输出tail -f ~/.openclaw/logs/skill_web_automation.log获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。