Commonly-used-high-value-skills web-scraper
用于网页数据抓取、结构化提取和反爬策略应对。仓库整理版,吸收社区高频最佳实践。
install
source · Clone the upstream repo
git clone https://github.com/seaworld008/Commonly-used-high-value-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/seaworld008/Commonly-used-high-value-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/openclaw-skills/web-scraper" ~/.claude/skills/seaworld008-commonly-used-high-value-skills-web-scraper && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/seaworld008/Commonly-used-high-value-skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/openclaw-skills/web-scraper" ~/.openclaw/skills/seaworld008-commonly-used-high-value-skills-web-scraper && rm -rf "$T"
manifest:
openclaw-skills/web-scraper/SKILL.mdsource content
Web Scraper
触发条件
- 当需要从第三方公开网站获取大规模数据(如价格监控、社交媒体趋势、新闻聚合)时。
- 在没有官方 API 或官方 API 限制过多、功能不足的情况下,需要直接从 HTML 中提取结构化信息。
- 需要自动化执行网页交互任务(如自动登录、表单填写、文件下载)时。
- 建立行业数据库、训练 AI 模型或进行市场调研需要大量原始网页数据支撑时。
- 需要实时监控网页内容变化(如库存变动、价格降价提醒)并触发警报时。
核心能力
1. HTTP 请求与会话管理 (Requests & Sessions)
- 请求头 (Headers) 伪装: 模拟真实浏览器行为,随机切换 User-Agent, Referer, Accept-Language。
- Cookie 维持: 使用 Session 对象自动处理 Cookie 传递,维持登录态。
- 代理池 (Proxy Pool): 动态切换 IP 地址,防止因单一 IP 频繁访问导致的封禁。
- 重试与退避: 实现自定义 Retry 策略,处理网络波动或短暂的服务端拒绝。
2. 多样化解析与提取技术 (Parsing & Extraction)
- CSS Selectors & XPath: 利用树状结构精准定位数据。
- 正则表达式 (Regex): 提取 HTML 或 JS 脚本中非结构化的文本数据(如动态变量)。
- BeautifulSoup/Lxml: Python 经典的 DOM 解析方案。
- Schema 提取: 自动识别网页中的 Schema.org 结构化数据(JSON-LD/Microdata)。
3. 处理动态 JS 渲染 (Modern Browsing)
- 无头浏览器 (Headless Browsers):
- Playwright: 现代、快速且支持多浏览器的自动化方案。
- Puppeteer: Google Chrome 官方提供的 Node.js 库。
- 等待机制: 精确控制
,waitForSelector
,waitForResponse
以确保数据加载完成。waitForTimeout - 事件模拟: 模拟点击 (Click)、滚动 (Scroll)、输入 (Type) 等用户行为触发 AJAX 加载。
4. 深度反爬应对策略 (Anti-scraping Evasion)
- 速率限制 (Rate Limiting): 实现分布式爬虫的并发控制,模仿人类浏览节奏(设置随机休眠)。
- 浏览器指纹 (Fingerprinting): 隐藏或伪造 WebGL, Canvas, 字体等特征,逃避指纹识别系统。
- 验证码 (Captcha) 处理:
- 自动规避策略(如不触发验证码)。
- 第三方识别服务(如 2Captcha, YesCaptcha)的集成。
- HTTP/2 支持: 许多高级反爬系统通过检测是否使用 HTTP/2 来识别爬虫。
5. 数据流与工程化 (Pipeline & Scale)
- 增量抓取 (Incremental Scraping): 基于 URL 哈希或 Last-Modified 头,只下载更新过的页面。
- 数据清洗 (Cleansing): 使用正则表达式和正则表达式去除 HTML 标签、转义字符及冗余空格。
- 结构化输出: 自动映射提取结果至 JSON, CSV, 或 SQL 数据库中。
- 并行与分布式: 利用多线程 (Threading) 或 Scrapy + Redis 实现千万级数据抓取。
常用命令/模板
Playwright Python 基础模板
from playwright.sync_api import sync_playwright def run(playwright): browser = playwright.chromium.launch(headless=True) context = browser.new_context(user_agent="Mozilla/5.0 ...") page = context.new_page() page.goto("https://example.com") # 模拟滚动到底部触发加载 page.evaluate("window.scrollTo(0, document.body.scrollHeight)") page.wait_for_selector(".item-list") items = page.query_selector_all(".item-list .title") results = [item.inner_text() for item in items] print(results) browser.close() with sync_playwright() as playwright: run(playwright)
BeautifulSoup 解析示例
from bs4 import BeautifulSoup import requests response = requests.get(url, headers=my_headers) soup = BeautifulSoup(response.text, 'lxml') # 使用 CSS Selector price = soup.select_one('.product-price').get_text(strip=True) # 使用 XPath (需配合 lxml.etree) # tree.xpath('//div[@id="title"]/h1/text()')
边界与限制
- 法律合规性 (Legal & Ethical): 严格遵守网站的
。禁止抓取非公开个人信息。遵循 GDPR 和反不正当竞争法。robots.txt - 资源消耗: 开启浏览器渲染会消耗极大的 CPU 和内存。
- 高频更新: 目标网站的前端结构一旦变更,爬虫代码必须同步重构。
- 物理障碍: 强力的验证码(如 HCaptcha/Cloudflare 5s check)有时难以通过程序完美突破。
- 业务干扰: 禁止进行高频率、破坏性的抓取行为(DDoS 级访问),以免对目标站点造成负担。
注:本技能适用于合规、合理的网页公开数据采集场景。
- lines: 115
- word count: ~1300 characters