以下是一份详细的 OpenClaw 使用说明,涵盖核心概念、安装、基础用法和关键功能。

核心概念
- 项目:一个爬虫项目的容器,包含多个爬虫。
- 爬虫:定义如何抓取特定网站的逻辑单元,每个爬虫包含一个或多个“任务”。
- 任务:爬虫执行的基本单位,对应一个具体的抓取目标(如一个列表页、一个详情页)。
- 选择器:用于从网页HTML中定位和提取数据的规则,OpenClaw支持CSS选择器和XPath。
- 数据项:定义你要提取的最终结构化数据格式(类似于一个数据库表结构)。
- 管道:处理已抓取数据的组件,例如数据清洗、验证、存储(到文件、数据库等)。
安装
OpenClaw 基于 Python,推荐使用 pip 安装。
# 如果你需要更强大的浏览器渲染(处理JavaScript动态加载的页面),可以安装Playwright支持 pip install openclaw[playwright] # 然后安装浏览器驱动 playwright install
基础使用步骤
第1步:创建项目
# 在命令行中,创建一个新的爬虫项目 claw startproject my_project cd my_project
这将会生成一个标准的项目结构:
my_project/
├── spiders/ # 存放你的爬虫文件
│ └── __init__.py
├── items.py # 定义数据模型
├── pipelines.py # 定义数据处理管道
├── settings.py # 项目配置文件
└── requirements.txt
第2步:定义数据模型(items.py)
在 items.py 中,定义你要抓取的数据结构。
from openclaw.items import BaseItem, Field
class BookItem(BaseItem):
# 定义一个名为BookItem的数据项= Field() # 书名字段
author = Field() # 作者字段
price = Field() # 价格字段
description = Field() # 描述字段
第3步:编写爬虫(spiders/)
在 spiders 目录下创建一个Python文件,book_spider.py。
import scrapy
from my_project.items import BookItem # 导入你定义的数据项
class BookSpider(scrapy.Spider):
name = "books" # 爬虫的唯一名称,用于运行它
allowed_domains = ["books.toscrape.com"] # 限制爬取的域名
start_urls = ["http://books.toscrape.com"] # 起始URL
def parse(self, response):
# 此方法处理起始URL的响应
# 提取书籍列表页的所有书籍链接
book_links = response.css('article.product_pod h3 a::attr(href)').getall()
for link in book_links:
# 构建绝对URL并回调到 parse_book 方法处理详情页
yield response.follow(link, callback=self.parse_book)
# 处理分页:查找“下一页”链接
next_page = response.css('li.next a::attr(href)').get()
if next_page:
yield response.follow(next_page, callback=self.parse)
def parse_book(self, response):
# 此方法处理单个书籍详情页
item = BookItem()
# 使用CSS选择器提取数据
item['title'] = response.css('div.product_main h1::text').get()
item['author'] = response.css('div.product_main p::text').re_first('by (.+)')
item['price'] = response.css('p.price_color::text').get()
item['description'] = response.xpath('//div[@id="product_description"]/following-sibling::p/text()').get()
# 返回提取到的数据项,交给管道处理
yield item
第4步:运行爬虫
在项目根目录(my_project/)下运行:
# 基本运行 claw crawl books # 常用选项: # -o 将结果输出到文件(支持JSON, JSON Lines, CSV, XML等格式) claw crawl books -o books.json claw crawl books -o books.csv # -a 传递参数给爬虫 claw crawl books -a category=fiction # --logfile 指定日志文件 claw crawl books --logfile crawl.log
第5步:配置与管道(settings.py & pipelines.py)
-
settings.py: 可以在此启用/禁用组件、设置并发量、延迟、User-Agent等。
BOT_NAME = 'my_project' ROBOTSTXT_OBEY = True # 是否遵守robots.txt协议 CONCURRENT_REQUESTS = 16 # 并发请求数 DOWNLOAD_DELAY = 0.5 # 下载延迟,避免对服务器造成压力 # 启用你编写的Item Pipeline ITEM_PIPELINES = { 'my_project.pipelines.MyProjectPipeline': 300, } -
pipelines.py: 对抓取的
item进行后期处理。class MyProjectPipeline: def process_item(self, item, spider): # 示例:清洗价格数据,移除货币符号 if item.get('price'): item['price'] = float(item['price'].replace('£', '')) # 可以在这里将数据存入数据库、写入文件等 # save_to_database(item) return item
进阶功能
-
处理JavaScript页面:
- 使用
scrapy-splash(需要Splash服务)或scrapy-playwright。 - 安装:
pip install scrapy-playwright - 在爬虫中启用:
class JSSpider(scrapy.Spider): name = 'js' def start_requests(self): yield scrapy.Request( url='http://example.com', meta={'playwright': True} # 关键:启用Playwright ) def parse(self, response): # 此时response包含由浏览器渲染后的HTML data = response.css('div.dynamic-content::text').get()
- 使用
-
模拟登录:
- 使用
FormRequest。def start_requests(self): return [scrapy.FormRequest( 'http://example.com/login', formdata={'username': 'john', 'password': 'secret'}, callback=self.after_login )]
- 使用
-
中间件:
- 用于全局处理请求和响应,如设置代理、自定义Headers、重试逻辑等,在
middlewares.py中配置。
- 用于全局处理请求和响应,如设置代理、自定义Headers、重试逻辑等,在
-
项目导出:
- OpenClaw 自带强大的
Feed Exports功能,无需编写管道即可将数据导出为多种格式。 - 在命令行中使用
-o参数,或在settings.py中配置FEEDS。
- OpenClaw 自带强大的
# 创建新项目 claw startproject <project_name> # 生成一个基础爬虫模板(可选,OpenClaw项目结构已很清晰) claw genspider <spider_name> <domain> # 运行爬虫 claw crawl <spider_name> # 检查爬虫的选择器 claw shell <url> # 列出项目中的所有爬虫 claw list
最佳实践与注意事项
-
遵守规则:
- 设置合理的
DOWNLOAD_DELAY和CONCURRENT_REQUESTS。 - 考虑启用
ROBOTSTXT_OBEY。 - 使用真实的
User-Agent并在Headers中注明你的身份。
- 设置合理的
-
错误处理:
- 编写健壮的选择器,使用
.get()(获取第一个)和.getall()(获取所有)而不是.extract_first()和.extract()(旧版方法)。 - 利用爬虫的
errback进行错误处理。
- 编写健壮的选择器,使用
-
性能:
- 利用OpenClaw的异步特性,合理配置并发参数。
- 对于大规模爬取,考虑使用
JOBDIR设置来暂停/恢复任务。
-
调试:
- 使用
claw shell <url>在交互环境中快速测试你的选择器。 - 查看详细的日志输出。
- 使用
使用OpenClaw就是:定义你想要的数据结构 -> 编写爬虫逻辑告诉它去哪抓、怎么抓 -> 配置如何存储和处理抓到的数据 -> 运行。
希望这份详细的指南能帮助你快速上手 OpenClaw!对于更具体的场景,建议查阅其官方文档。