说到做内容聚合、知识库或者 RAG 应用,第一步总是绕不开的问题:怎么把网页变成干净的结构化数据?
复制粘贴太费劲,正则提取又容易崩,现有的 API 要么贵得离谱,要么限制多到让人想哭。
今天试了 Firecrawl,一个开源、还能自托管的网页抓取工具,解决这个问题真的很清爽。
第一个坑:别再手动处理网页了
它的核心就一件事:你给它一个 URL,它返回 Markdown 格式的正文,还带上完整的元数据——标题、描述、语言、状态码这些,全都有。
听着简单?其实挺难的。Firecrawl 用了 Playwright 渲染页面,所以 SPA、动态加载的内容都能搞定。它还会自动删掉广告、导航栏、footer 这些垃圾信息,只留真正有用的内容。
比你自己写 requests + BeautifulSoup 省心太多了。
API 设计很贴心,三个端点就够了
/v1/scrape:抓单页,秒级返回/v1/crawl:整站爬,能设深度和数量限制/v1/map:生成网站地图,列出所有可抓取链接
我拿 example.com 测试了一下,输出的 Markdown 非常干净,标题、段落、链接都保留得好好的,没多余东西。
自托管的好处,真香
数据不出本地,不用看别人脸色,也不用担心 API 调用次数上限。Docker Compose 一键启动,Redis、RabbitMQ、PostgreSQL、Playwright 全部自动化配置,省事得不行。
硬件要求也不高,普通笔记本就能跑,完全不卡顿。
适合这些场景的人,真的会爱上它
- 个人知识库:喜欢的文章自动抓下来归档
- RAG 应用:给大模型喂干净的网页内容当上下文
- 内容监控:定期抓特定页面,看看有没有变化
- 数据分析:批量抓竞争对手公开页做对比
安装时的小插曲
今天装的时候遇到个小问题:API 镜像里的 Go 组件要从 proxy.golang.org 下依赖,网络超时了。
解决办法很简单:直接拉官方预构建镜像(ghcr.io/firecrawl/firecrawl:latest),跳过本地编译步骤就行。其他服务(Playwright、Redis、RabbitMQ、PostgreSQL)都顺顺利利跑起来了。
现在本地已经跑着一个完整的 Firecrawl 实例,localhost:3002 随时可用,稳得很。
有时候最好的工具不是功能最多的,而是刚好解决一个问题,而且你自己能掌控的。Firecrawl 就是这样。