【OpenClaw 2026.3.13 智能网页抓取Skill完整实现】
OpenClaw智能网页抓取技能实现摘要: 该技能专为搜狐旅游网站设计,提供完整的网页内容抓取解决方案。核心功能包括: 结构化目录设计,包含执行脚本和配置文件 针对搜狐旅游的HTML结构优化,自动过滤广告/导航等噪音标签 支持中文编码处理、动态加载适配和文本长度控制 提供两种依赖管理方案(临时venv或系统Python) 返回结构化JSON数据,包含状态、原文链接、提取内容等信息 技能特点: 开箱
智能网页抓取Skill完整实现
基于提供搜狐旅游可访问链接、技能路径/home/dev01/.openclaw/workspace/skills/smart-web-scraper),以下是开箱即用的完整技能实现,包含脚本、配置、测试全流程,解决工作区技能missing、依赖隔离、链接抓取适配等问题。
一、技能目录结构(先确认)
确保你的目录结构如下(没有则创建):
/home/dev01/.openclaw/workspace/skills/smart-web-scraper/
├── execution.py # 核心爬虫脚本(适配搜狐旅游链接)
└── SKILL.md # 技能配置文件(工作区版本)
二、核心文件1:execution.py(适配搜狐旅游链接)
针对搜狐旅游链接的HTML结构做了专属适配(处理动态加载标签、广告过滤),保留核心文章内容:
import requests
from bs4 import BeautifulSoup
import logging
import sys
import re
# 配置日志(写入OpenClaw全局日志)
logging.basicConfig(level=logging.INFO, format="[SmartWebScraper] %(message)s")
# 搜狐旅游专属过滤规则(移除广告/导航/无关标签)
SOHU_FILTER_TAGS = ['script', 'style', 'nav', 'footer', 'header', 'aside',
'div[class*="ad"]', 'div[class*="banner"]', 'div[class*="sidebar"]',
'div[class*="comment"]', 'div[class*="related"]']
def scrape_sohu_travel(url: str, max_words: int = 5000) -> dict:
"""
适配搜狐旅游链接的爬虫函数(https://travel.sohu.com/xxx)
:param url: 目标URL(已验证可访问)
:param max_words: 返回文本长度上限,默认5000
:return: 结构化结果(OpenClaw可直接解析)
"""
logging.info(f"开始抓取搜狐旅游链接:{url},文本上限: {max_words}字")
# 搜狐旅游专属请求头(模拟浏览器,避免反爬)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36',
'Referer': 'https://travel.sohu.com/',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Cache-Control': 'no-cache'
}
try:
# 发送请求(超时15秒,适配搜狐服务器响应速度)
response = requests.get(url, headers=headers, timeout=15)
response.encoding = 'utf-8' # 强制UTF-8编码,解决搜狐中文乱码
response.raise_for_status()
# 解析HTML(适配搜狐旅游的DOM结构)
soup = BeautifulSoup(response.text, 'html.parser')
# 第一步:移除广告/导航等噪音标签
for tag_rule in SOHU_FILTER_TAGS:
if '[' in tag_rule: # 带属性的标签
for tag in soup.select(tag_rule):
tag.decompose()
else: # 普通标签
for tag in soup.find_all(tag_rule):
tag.decompose()
# 第二步:提取核心内容(搜狐旅游文章主体通常在article/div[class*="content"])
main_content = soup.find('article') or soup.find('div', class_=re.compile('content|main|article'))
if not main_content:
main_content = soup # 兜底:无主体标签时提取整个页面
# 第三步:清洗文本(移除多余空格/换行)
raw_text = main_content.get_text(separator=' ', strip=True)
# 过滤连续空格和换行
clean_text = re.sub(r'\s+', ' ', raw_text)
# 截断文本(防止上下文溢出)
final_text = clean_text[:max_words] if len(clean_text) > max_words else clean_text
# 返回结构化结果
return {
"status": "success",
"url": url,
"source": "搜狐旅游",
"extracted_content": final_text,
"raw_text_length": len(raw_text),
"returned_length": len(final_text)
}
except requests.exceptions.RequestException as e:
logging.error(f"抓取失败: {str(e)}")
return {
"status": "error",
"url": url,
"error_type": type(e).__name__,
"error_message": f"搜狐旅游链接抓取失败:{str(e)},请检查网络或URL有效性"
}
# 命令行执行入口(适配OpenClaw调用)
if __name__ == "__main__":
if len(sys.argv) < 2:
print("使用规范:python execution.py <搜狐旅游URL> [文本长度上限]")
print("示例:python execution.py https://travel.sohu.com/?pcm=202.412_19_0.0.0&scm=thor.412_14-201000.0.0-0-0-0-0.0&spm=smpc.home.top-nav.20.1773638471929ahrbqKQ_1467 5000")
sys.exit(1)
url = sys.argv[1]
max_words = int(sys.argv[2]) if len(sys.argv) >=3 else 5000
result = scrape_sohu_travel(url, max_words)
# 打印JSON格式结果(OpenClaw易解析)
import json
print(json.dumps(result, ensure_ascii=False, indent=2))
三、核心文件2:SKILL.md(工作区版本适配)
针对工作区路径/home/dev01/.openclaw/workspace/skills/smart-web-scraper优化,解决missing问题,集成临时venv依赖安装逻辑:
---
# OpenClaw 2026.3.13 工作区技能配置
name: smart-web-scraper
description: 专属搜狐旅游链接抓取工具,自动清洗广告/导航,提取核心文章内容,支持自定义文本长度上限
user-invocable: true
icon: 🕷️
metadata:
openclaw:
requires: {} # 关闭依赖校验(解决missing问题)
permissions: [network, file.read]
---
# 搜狐旅游网页抓取器使用说明
## 调用场景
当用户要求抓取搜狐旅游链接(https://travel.sohu.com/xxx)的内容时,必须调用本技能。
用户示例:
- 爬取https://travel.sohu.com/?pcm=202.412_19_0.0.0&scm=thor.412_14-201000.0.0-0-0-0-0.0&spm=smpc.home.top-nav.20.1773638471929ahrbqKQ_1467的内容
- /smart-web-scraper https://travel.sohu.com/xxx 5000
## 执行命令(完整临时venv逻辑,无需提前装依赖)
python3 -m venv /tmp/smart-scraper-venv && \
/tmp/smart-scraper-venv/bin/pip install requests beautifulsoup4 --quiet --no-cache-dir && \
/tmp/smart-scraper-venv/bin/python /home/dev01/.openclaw/workspace/skills/smart-web-scraper/execution.py <目标URL> [文本长度上限] && \
rm -rf /tmp/smart-scraper-venv || \
# 兜底方案:venv失败时用系统Python执行
python3 /home/dev01/.openclaw/workspace/skills/smart-web-scraper/execution.py <目标URL> [文本长度上限]
## 入参规范
1. <目标URL>:必填,必须是搜狐旅游的有效链接(https://travel.sohu.com/开头);
2. [文本长度上限]:可选,整数,默认5000,建议不超过10000。
## 行为准则
- 仅抓取搜狐旅游链接的核心文章内容,不爬取广告/评论/侧边栏;
- 抓取失败时直接返回错误信息,不尝试其他URL;
- 输出结果包含「来源:搜狐旅游」标识,便于用户识别。
## 输出规范
抓取成功示例:
来源:搜狐旅游
URL:https://travel.sohu.com/xxx
提取内容长度:1200字
核心内容:[清洗后的纯文本]
四、关键操作步骤(照做即可)
步骤1:创建/替换文件
将上述execution.py和SKILL.md内容,分别写入对应路径的文件中:
# 写入execution.py
cat > /home/dev01/.openclaw/workspace/skills/smart-web-scraper/execution.py << 'EOF'
# 粘贴上面的execution.py完整内容
EOF
# 写入SKILL.md
cat > /home/dev01/.openclaw/workspace/skills/smart-web-scraper/SKILL.md << 'EOF'
# 粘贴上面的SKILL.md完整内容
EOF
步骤2:启用工作区技能(关键)
工作区技能默认未启用,执行以下命令:
# 启用工作区的smart-web-scraper技能
openclaw skills enable smart-web-scraper --workspace
# 刷新技能(2026.3.13必须执行)
openclaw skills refresh
步骤3:验证技能是否生效
# 查看技能状态(应显示✓ enabled)
openclaw skills list | grep smart-web-scraper
正常输出示例:
✓ enabled │ 📦 smart-web-scraper │ 专属搜狐旅游链接抓取工具,自动清洗广告/导航,提取核心文章内容 │ openclaw-workspace
五、测试技能(调用搜狐旅游链接)
方式1:手动执行脚本(验证功能)
# 直接执行脚本,测试搜狐旅游链接
python3 /home/dev01/.openclaw/workspace/skills/smart-web-scraper/execution.py "https://travel.sohu.com/?pcm=202.412_19_0.0.0&scm=thor.412_14-201000.0.0-0-0-0-0.0&spm=smpc.home.top-nav.20.1773638471929ahrbqKQ_1467" 5000
正常输出:会打印JSON格式的抓取结果,包含搜狐旅游的核心内容。
方式2:OpenClaw斜杠命令调用(正式使用)
在OpenClaw终端/聊天界面输入:
/smart-web-scraper https://travel.sohu.com/?pcm=202.412_19_0.0.0&scm=thor.412_14-201000.0.0-0-0-0-0.0&spm=smpc.home.top-nav.20.1773638471929ahrbqKQ_1467 5000
AI会自动执行爬虫,返回清洗后的搜狐旅游核心内容。
六、常见问题解决
问题1:技能仍显示missing
# 强制刷新工作区技能
openclaw skills refresh --force
# 重新启用
openclaw skills disable smart-web-scraper --workspace
openclaw skills enable smart-web-scraper --workspace
问题2:抓取搜狐链接返回空内容
检查execution.py中的SOHU_FILTER_TAGS是否过滤过严,可临时注释部分标签(如div[class*="content"])重试。
问题3:pip安装依赖超时
修改SKILL.md中的pip命令,添加国内源:
/tmp/smart-scraper-venv/bin/pip install requests beautifulsoup4 --quiet --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple && \
总结
- 技能路径:严格适配你指定的
/home/dev01/.openclaw/workspace/skills/smart-web-scraper,通过--workspace参数启用; - 核心适配:
execution.py针对搜狐旅游链接做了专属HTML清洗,保证内容提取有效性; - 依赖隔离:通过临时venv安装依赖,不污染系统环境,且添加兜底逻辑避免执行失败;
- 关键操作:工作区技能必须执行
enable命令,否则会显示missing。
执行完所有步骤后,你可直接通过斜杠命令调用该技能,抓取指定的搜狐旅游链接内容。
更多推荐




所有评论(0)