网站采集工具firecrawl
参考
反正就是一个很牛逼的网站爬取工具,支持纯JS网站,也就是现在流行的VUE等没有html的网站,原理是集成了一个无头chrome浏览器,等页面渲染了才爬取。
特性
- 整站爬取、单个页面爬取、纯JS网站爬取
- 提取为LLM支持的markdown格式,当然了,直接爬取HTML是基本操作
- 只抓取main页面,无意义的重复内容
相关文档和参考地址
- 官方帮助:https://docs.firecrawl.dev/introduction
- 网上的资料很多是V0版本的,但是现在firecrawl已经升级到V版本啦,而且v0版本将在2025年4月1日下线:https://docs.firecrawl.dev/v1-welcome
- github源代码地址:https://github.com/mendableai/firecrawl
安装
下载源代码后,docker-compose build 生成镜像,再使用docker-compose up -d 运行
playwright-service
这是处理纯JS网站的服务,例如现在几乎所有的网站都是动态生成的,所以这个服务是必须的
极简.env文件,其实不要也可以跑
# 核心配置
NUM_WORKERS_PER_QUEUE=8
PORT=3002
HOST=0.0.0.0
REDIS_URL=redis://redis:6379
REDIS_RATE_LIMIT_URL=redis://redis:6379
PLAYWRIGHT_MICROSERVICE_URL=http://playwright-service:3000/html
# 数据库及其他可选配置
USE_DB_AUTHENTICATION=false
API调用,现在GPT很强大,不懂的文GPT吧
- 整站爬取
curl -X POST http://localhost:3002/v1/crawl \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{
"url": "https://docs.firecrawl.dev",
"limit": 100,
"scrapeOptions": {
"formats": ["markdown", "html"]
}
}'
- 获取爬取状态、或者说是爬取的结果
curl -X GET http://localhost:3002/v1/crawl/<jobid>
- 抓取单个 URL
curl -X POST http://localhost:3002/v1/scrape \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{
"url": "https://docs.firecrawl.dev",
"formats": ["markdown", "html"]
}'
- 获取网站地图
curl -X POST http://localhost:3002/v1/map \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{
"url": "https://firecrawl.dev"
}'
``
- 执行搜索
```shell
curl -X POST http://localhost:3002/v1/search \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{
"query": "AI tools",
"limit": 5,
"scrapeOptions": {
"formats": ["markdown"]
}
}'
- 结构化数据
curl -X POST http://localhost:3002/v1/extract \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{
"url": "https://example.com",
"extract": {
"schema": {
"type": "object",
"properties": {
"title": {"type": "string"},
"price": {"type": "number"}
}
}
}
}'
- 批量抓取`
curl -X POST http://localhost:3002/v1/batch/scrape \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-d '{
"urls": ["https://example1.com", "https://example2.com"],
"options": {
"formats": ["markdown"]
}
}'