基础安装

openclaw OpenClaw博客 1

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

基础安装-第1张图片-OpenClaw 中文站-AI龙虾中文社区

核心概念

  1. 项目:一个爬虫项目的容器,包含多个爬虫。
  2. 爬虫:定义如何抓取特定网站的逻辑单元,每个爬虫包含一个或多个“任务”。
  3. 任务:爬虫执行的基本单位,对应一个具体的抓取目标(如一个列表页、一个详情页)。
  4. 选择器:用于从网页HTML中定位和提取数据的规则,OpenClaw支持CSS选择器和XPath。
  5. 数据项:定义你要提取的最终结构化数据格式(类似于一个数据库表结构)。
  6. 管道:处理已抓取数据的组件,例如数据清洗、验证、存储(到文件、数据库等)。

安装

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

进阶功能

  1. 处理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()
  2. 模拟登录

    • 使用 FormRequest
      def start_requests(self):
      return [scrapy.FormRequest(
          'http://example.com/login',
          formdata={'username': 'john', 'password': 'secret'},
          callback=self.after_login
      )]
  3. 中间件

    • 用于全局处理请求和响应,如设置代理、自定义Headers、重试逻辑等,在 middlewares.py 中配置。
  4. 项目导出

    • OpenClaw 自带强大的 Feed Exports 功能,无需编写管道即可将数据导出为多种格式。
    • 在命令行中使用 -o 参数,或在 settings.py 中配置 FEEDS
# 创建新项目
claw startproject <project_name>
# 生成一个基础爬虫模板(可选,OpenClaw项目结构已很清晰)
claw genspider <spider_name> <domain>
# 运行爬虫
claw crawl <spider_name>
# 检查爬虫的选择器
claw shell <url>
# 列出项目中的所有爬虫
claw list

最佳实践与注意事项

  1. 遵守规则

    • 设置合理的 DOWNLOAD_DELAYCONCURRENT_REQUESTS
    • 考虑启用 ROBOTSTXT_OBEY
    • 使用真实的 User-Agent 并在Headers中注明你的身份。
  2. 错误处理

    • 编写健壮的选择器,使用 .get()(获取第一个)和 .getall()(获取所有)而不是 .extract_first().extract()(旧版方法)。
    • 利用爬虫的 errback 进行错误处理。
  3. 性能

    • 利用OpenClaw的异步特性,合理配置并发参数。
    • 对于大规模爬取,考虑使用 JOBDIR 设置来暂停/恢复任务。
  4. 调试

    • 使用 claw shell <url> 在交互环境中快速测试你的选择器。
    • 查看详细的日志输出。

使用OpenClaw就是:定义你想要的数据结构 -> 编写爬虫逻辑告诉它去哪抓、怎么抓 -> 配置如何存储和处理抓到的数据 -> 运行。

希望这份详细的指南能帮助你快速上手 OpenClaw!对于更具体的场景,建议查阅其官方文档。

标签: 基础 安装

抱歉,评论功能暂时关闭!