AnyCrawl 项目详细介绍
🚀 项目概述
AnyCrawl 是一个高性能的网络爬虫和数据抓取应用程序,基于 Node.js/TypeScript 构建。该项目专为大语言模型(LLM)优化,能够将网站内容转换为 LLM 可用的数据格式,并从 Google、Bing、百度等搜索引擎中提取结构化的搜索结果页面(SERP)数据。
🎯 核心特性
AnyCrawl 在多个领域表现出色:
- SERP 爬取:支持多个搜索引擎,具备批量处理能力
- 网页爬取:高效的单页面内容提取
- 站点爬取:智能遍历的全站点爬取功能
- 高性能架构:多线程和多进程架构设计
- 批量处理:高效处理批量爬取任务
🏗️ 技术架构
现代化设计
- 基于 Node.js/TypeScript 构建
- 针对大语言模型(LLM)优化
- 支持原生多线程批量处理
- 现代化架构设计
支持的爬取引擎
AnyCrawl 支持多种爬取引擎:
- Cheerio:静态 HTML 解析,速度最快
- Playwright:JavaScript 渲染,使用现代引擎
- Puppeteer:JavaScript 渲染,使用 Chrome 引擎
🚀 快速开始
Docker 部署
使用 Docker Compose 快速启动:
docker compose up --build
环境变量配置
| 变量名 | 描述 | 默认值 | 示例 |
|---|---|---|---|
NODE_ENV |
运行时环境 | production | production, development |
ANYCRAWL_API_PORT |
API 服务端口 | 8080 | 8080 |
ANYCRAWL_HEADLESS |
浏览器引擎是否使用无头模式 | true | true, false |
ANYCRAWL_PROXY_URL |
代理服务器 URL(支持 HTTP 和 SOCKS) | (无) | http://proxy:8080 |
ANYCRAWL_IGNORE_SSL_ERROR |
忽略 SSL 证书错误 | true | true, false |
ANYCRAWL_KEEP_ALIVE |
请求之间保持连接 | true | true, false |
ANYCRAWL_AVAILABLE_ENGINES |
可用的爬取引擎(逗号分隔) | cheerio,playwright,puppeteer | playwright,puppeteer |
ANYCRAWL_API_DB_TYPE |
数据库类型 | sqlite | sqlite, postgresql |
ANYCRAWL_API_DB_CONNECTION |
数据库连接字符串/路径 | /usr/src/app/db/database.db | /path/to/db.sqlite |
ANYCRAWL_REDIS_URL |
Redis 连接 URL | redis://redis:6379 | redis://localhost:6379 |
ANYCRAWL_API_AUTH_ENABLED |
启用 API 认证 | false | true, false |
ANYCRAWL_API_CREDITS_ENABLED |
启用积分系统 | false | true, false |
📝 API 使用指南
网页抓取 API
基本用法
curl -X POST http://localhost:8080/v1/scrape \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_ANYCRAWL_API_KEY' \
-d '{
"url": "https://example.com",
"engine": "cheerio"
}'
参数说明
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
url |
string (必需) | 要抓取的 URL。必须是以 http:// 或 https:// 开头的有效 URL | - |
engine |
string | 使用的抓取引擎。选项:cheerio(静态 HTML 解析,最快)、playwright(JavaScript 渲染,现代引擎)、puppeteer(JavaScript 渲染,Chrome 引擎) | cheerio |
proxy |
string | 请求的代理 URL。支持 HTTP 和 SOCKS 代理。格式:http://[username]:[password]@proxy:port | (无) |
搜索引擎抓取 API
基本用法
curl -X POST http://localhost:8080/v1/search \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_ANYCRAWL_API_KEY' \
-d '{
"query": "AnyCrawl",
"limit": 10,
"engine": "google",
"lang": "all"
}'
参数说明
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
query |
string (必需) | 要执行的搜索查询 | - |
engine |
string | 使用的搜索引擎。选项:google | |
pages |
integer | 要检索的搜索结果页数 | 1 |
lang |
string | 搜索结果的语言代码(例如:'en'、'zh'、'all') | en-US |
🧪 测试和开发
Playground
你可以使用 Playground 来测试 API 并为你喜欢的编程语言生成代码示例。
💡 注意:如果你是自托管 AnyCrawl,确保将 https://api.anycrawl.dev 替换为你自己的服务器 URL。
❓ 常见问题
Q: 可以使用代理吗?
A: 是的,AnyCrawl 支持 HTTP 和 SOCKS 代理。通过 ANYCRAWL_PROXY_URL 环境变量进行配置。
Q: 如何处理 JavaScript 渲染的内容?
A: AnyCrawl 支持 Puppeteer 和 Playwright 来处理 JavaScript 渲染需求。
总结
AnyCrawl 代表了现代网络爬虫技术的前沿,特别是在 AI 和机器学习应用场景中。其高性能、易用性和丰富的功能使其成为开发者和企业处理大规模数据抓取任务的理想选择。