Crawl4AI 是一个开源的、基于 Python 和 AI 技术的 Web 爬虫框架,适用于自动化数据抓取和任务调度。在实际部署中,我们会通过 n8n(一个流行的低代码自动化工作流工具)来自动化和调度爬虫任务。以下是 Crawl4AI 的部署安装步骤和如何与 n8n 集成,实现在 Web 爬虫任务中的自动化工作流。

1. 安装 Crawl4AI

1.1. 准备环境

首先,确保你已经安装了以下依赖:

  • Python 3.7+
  • Git
  • pip

推荐使用虚拟环境来隔离项目依赖。使用 venv 来创建虚拟环境。

# 安装虚拟环境
python3 -m venv crawl4ai-env

# 激活虚拟环境
# Linux/macOS
source crawl4ai-env/bin/activate
# Windows
crawl4ai-env\Scripts\activate

1.2. 安装 Crawl4AI

  1. 克隆 Crawl4AI 仓库
git clone https://github.com/Crawl4AI/Crawl4AI.git
cd Crawl4AI
  1. 安装依赖
pip install -r requirements.txt

1.3. 配置数据库

Crawl4AI 默认使用 SQLite 数据库。如果你想使用其他数据库(如 MySQL/PostgreSQL),需要修改配置文件 settings.py 中的数据库连接部分。

# SQLite(默认配置)
DATABASE = 'sqlite:///crawl4ai.db'

# 或者 PostgreSQL
DATABASE = 'postgresql://username:password@localhost/crawl4ai'

1.4. 配置爬虫

在 Crawl4AI 中,你需要创建爬虫任务。在 crawl4ai 目录下,创建一个新的爬虫文件(例如 my_spider.py)。

import scrapy

class MySpider(scrapy.Spider):
    name = 'my_spider'
    start_urls = ['https://example.com']

    def parse(self, response):
        # 解析抓取的数据
        yield {'title': response.xpath('//title/text()').get()}

1.5. 启动爬虫

启动爬虫并开始抓取数据:

scrapy crawl my_spider

你可以根据实际需求修改爬虫的实现和配置。


2. 安装 n8n 并集成 Crawl4AI

n8n 是一个低代码的工作流自动化工具,它可以帮助你将多个应用和任务链式执行。我们将 Crawl4AI 的爬虫与 n8n 集成,实现自动化工作流。

2.1. 安装 n8n

n8n 可以通过 Docker 快速部署,推荐这种方法。你也可以使用官方提供的安装方法,但使用 Docker 更加简便。

  1. 拉取并运行 n8n Docker 镜像
docker run -d --name n8n -p 5678:5678 --restart always \
    -e GENERIC_TIMEZONE="Europe/Berlin" \
    -e N8N_BASIC_AUTH_ACTIVE="true" \
    -e N8N_BASIC_AUTH_USER="admin" \
    -e N8N_BASIC_AUTH_PASSWORD="password" \
    n8nio/n8n

在这个命令中,admin 和 password 是你登录 n8n 的用户名和密码,可以根据需求修改。

  1. 访问 n8n 界面:

打开浏览器,访问 http://localhost:5678,使用配置的用户名和密码登录。

2.2. 创建 n8n 工作流

  1. 登录 n8n 后,点击 新建工作流,然后选择 HTTP 请求 作为触发器,设置触发爬虫的 HTTP 请求(例如,定时触发或某个事件触发爬虫)。
  2. 在 HTTP 请求 节点中,配置请求 URL,例如:http://localhost:8000/start_spider 这个 URL 是你用来触发爬虫的 Web 服务接口,假设你已经在 Crawl4AI 中搭建了一个 API 用于启动爬虫。
  3. 添加 执行命令 节点,设置爬虫命令。例如,使用 Scrapy 启动爬虫。配置命令为:scrapy crawl my_spider 你可以选择将命令配置为在本地机器上执行,或者在容器中执行。
  4. 配置数据传输方式和存储。可以将抓取的数据保存到数据库、文件或者直接通过 API 发送给其他应用。
  5. 配置定时触发爬虫任务的计划。通过 n8n,可以设置定时任务自动触发爬虫的运行。

3. 配置 Web 服务接口触发爬虫(可选)

为了与 n8n 配合工作,你可以将爬虫配置为通过 HTTP 请求触发。使用 Flask(或其他框架)快速创建一个 Web 服务接口来启动爬虫。

3.1. 使用 Flask 启动爬虫

  1. 安装 Flask:
pip install flask
  1. 创建一个 Flask 应用,用于启动爬虫:
from flask import Flask
import subprocess

app = Flask(__name__)

@app.route('/start_spider', methods=['GET'])
def start_spider():
    # 启动爬虫命令
    subprocess.Popen(['scrapy', 'crawl', 'my_spider'])
    return "Spider Started!", 200

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000)
  1. 启动 Flask 服务:
python app.py

Flask 服务将在 http://localhost:8000/start_spider 启动爬虫,你可以将这个 URL 配置到 n8n 的 HTTP 请求触发器中。


4. 测试与调试

  1. 启动 Flask Web 服务:确保 Flask 服务正在运行,并能够成功触发爬虫。
  2. 测试 n8n 工作流:在 n8n 中触发工作流,确保爬虫能够成功启动,抓取数据并完成任务。
  3. 查看爬虫日志:检查爬虫输出的日志,确保它能正常运行并抓取数据。

5. 总结

通过 Crawl4AI 和 n8n,你可以实现高效的 Web 爬虫任务自动化,具体步骤如下:

  1. 安装并配置 Crawl4AI 爬虫框架。
  2. 配置爬虫任务和启动方式。
  3. 使用 n8n 集成自动化工作流,定时或按需触发爬虫。
  4. 使用 Flask 或其他框架提供 Web 服务接口,以便触发爬虫。

这种集成方法可以大大简化爬虫管理和自动化数据抓取的流程,提高工作效率。