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 和機器學習應用場景中。其高性能、易用性和豐富的功能使其成為開發者和企業處理大規模資料抓取任務的理想選擇。