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
- 克隆 Crawl4AI 仓库
git clone https://github.com/Crawl4AI/Crawl4AI.git
cd Crawl4AI
- 安装依赖
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 更加简便。
- 拉取并运行 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 的用户名和密码,可以根据需求修改。
- 访问 n8n 界面:
打开浏览器,访问 http://localhost:5678
,使用配置的用户名和密码登录。
2.2. 创建 n8n 工作流
- 登录 n8n 后,点击 新建工作流,然后选择 HTTP 请求 作为触发器,设置触发爬虫的 HTTP 请求(例如,定时触发或某个事件触发爬虫)。
- 在 HTTP 请求 节点中,配置请求 URL,例如:
http://localhost:8000/start_spider
这个 URL 是你用来触发爬虫的 Web 服务接口,假设你已经在 Crawl4AI 中搭建了一个 API 用于启动爬虫。 - 添加 执行命令 节点,设置爬虫命令。例如,使用 Scrapy 启动爬虫。配置命令为:
scrapy crawl my_spider
你可以选择将命令配置为在本地机器上执行,或者在容器中执行。 - 配置数据传输方式和存储。可以将抓取的数据保存到数据库、文件或者直接通过 API 发送给其他应用。
- 配置定时触发爬虫任务的计划。通过 n8n,可以设置定时任务自动触发爬虫的运行。
3. 配置 Web 服务接口触发爬虫(可选)
为了与 n8n 配合工作,你可以将爬虫配置为通过 HTTP 请求触发。使用 Flask(或其他框架)快速创建一个 Web 服务接口来启动爬虫。
3.1. 使用 Flask 启动爬虫
- 安装 Flask:
pip install flask
- 创建一个 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)
- 启动 Flask 服务:
python app.py
Flask 服务将在 http://localhost:8000/start_spider
启动爬虫,你可以将这个 URL 配置到 n8n 的 HTTP 请求触发器中。
4. 测试与调试
- 启动 Flask Web 服务:确保 Flask 服务正在运行,并能够成功触发爬虫。
- 测试 n8n 工作流:在 n8n 中触发工作流,确保爬虫能够成功启动,抓取数据并完成任务。
- 查看爬虫日志:检查爬虫输出的日志,确保它能正常运行并抓取数据。
5. 总结
通过 Crawl4AI 和 n8n,你可以实现高效的 Web 爬虫任务自动化,具体步骤如下:
- 安装并配置 Crawl4AI 爬虫框架。
- 配置爬虫任务和启动方式。
- 使用 n8n 集成自动化工作流,定时或按需触发爬虫。
- 使用 Flask 或其他框架提供 Web 服务接口,以便触发爬虫。
这种集成方法可以大大简化爬虫管理和自动化数据抓取的流程,提高工作效率。
发表回复