Firecrawl 实战指南:五分钟内把任意网页变成大模型能读的数据
【免费下载链接】firecrawlThe context API to search, scrape, and interact with the web at scale. 🔥项目地址: https://gitcode.com/GitHub_Trending/fi/firecrawl
做 AI 应用的人都会撞上同一堵墙:requests 抓回的 HTML 里塞满脚本标签和导航栏,再碰上 JS 渲染的页面,正则写法直接报废。Firecrawl 是一个开源的网页抓取 API:给它一个 URL,它回吐干净的 Markdown 或结构化 JSON,可以直接喂给大模型。代理轮换、反爬对抗、动态渲染这些脏活都由它代劳,自托管和托管服务两条路都走得通。
旧写法对比:手写爬虫为什么这么脆弱
常规组合是 requests 拉 HTML,再用 CSS 选择器(一种指定页面元素位置的结构描述)解析。这套打法有三处硬伤:页面一改版代码就断;JS 渲染出来的内容,requests 根本看不到;目标站加了反爬,代理还得自己养。
Firecrawl 替的正是这一层:一次请求拿到 LLM 就绪的数据,输出可以是 markdown、结构化 JSON、截图,也可以组合。代理轮换、频率限制、JS 拦截都在服务端处理好,零配置。对它的心智模型就一句:你声明“抓哪个页、要什么形态的结果”,抓和清洗归它。
最小验证路径:装包、拿密钥、发第一个请求
装包两条命令:Python 执行pip install firecrawl-py,JavaScript 执行npm install @mendable/firecrawl-js。再到官网注册拿 API key(有免费额度),写进环境变量FIRECRAWL_API_KEY。
第一个请求短到只有几行:
from firecrawl import Firecrawl app = Firecrawl(api_key="fc-YOUR_API_KEY") result = app.scrape("https://example.com")返回的结果就是页面的干净 markdown:正文、标题层级、表格都在,导航栏和脚本一概没有。跑通这一次,后面的玩法都能试。
只有问题没有 URL 时怎么办
真实任务里你手里常常只有一句自然语言,它给了三档升级选项:
- Search:
app.search("查询词", limit=5)搜完直接回搜索结果页的完整 markdown 正文,而不是一串链接。 - Agent:只传一句话,比如“查一下 Notion 的定价方案”,AI 自己去搜索、翻页、定位,最后连答案带来源 URL 一起返回。
- deep_research:让程序自己“做研究”,多轮搜、多轮抓。
仓库里的公寓查找示例用了第三档:你输入城市、预算、卧室数,它自动搜索、跟链接、一批批抓页面。参数只有三个——maxDepth(迭代轮数,示例设为 3)、timeLimit(180 秒上限)、maxUrls(最多分析 20 个 URL)。脚本还注册了on_activity回调,每一步在终端实时打印。拿回来的不是一堆链接,而是排好序的候选清单:价格、位置、设施、优缺点逐条列好。
用数据模型锁定字段:Hacker News 的做法
场景是每天存一份 Hacker News 首页做分析。这个示例不写选择器,而是先用 Pydantic(Python 的模型定义与校验库)声明“我要什么”:标题、排名、点赞数、作者各一个字段,每个字段带一句说明。之后调用scrape_url时传formats: ["extract"]和这个模型的 JSON Schema,AI 照模型把每个字段填好。
跑一次脚本,一条命令拿到全部 30 条新闻的完整字段,自动存成带时间戳的 JSON 文件。页面以后怎么改版,都不影响你的字段定义,需要动的只有模型本身。
批量提取加定时运行:拼一个价格跟踪器
入门之后还有两件事值得做。
批量提取。/v1/extract接口一次收多个 URL 加一句提示词,AI 一次性把字段抽完。Gemini 网页提取器示例把流程拆成三步:先用 SerpAPI 搜出目标公司的一批结果,再让 Gemini 从中挑出最有价值的 URL,最后把选中的 URL 连同提示词发给 extract 接口。几十秒得到一份结构化的公司档案,搜索、筛选、提取各司其职。
定时运行。Amazon 价格跟踪示例的套路可以直接抄:按固定间隔抓商品页、抽价格、追加落盘,界面画出历史曲线。调度不用自己维护,把脚本挂到 GitHub Actions 的 cron 上就行,仓库里还有一篇定时抓取教程专门讲这件事。
高频避坑问答
字段抽错了先改 Schema 描述。给每个字段写一句更具体的description,AI 提取的准确率会明显抬升,这是最省事的调优手段。
整站爬取怕失控?Crawl 有limit参数限制 URL 总数,还能按路径白名单、黑名单决定抓什么。先小批量试跑,确认范围再放大。
输出格式想切换?formats参数可组合markdown、html、screenshot。只喂大模型时 markdown 最省 token;要留证据链就再要一张截图。
被反爬挡住?不用管,代理轮换是内置的,这正是它替手写 requests 出力的地方。
想自托管?仓库根目录自带 docker-compose.yaml:从 https://gitcode.com/GitHub_Trending/fi/firecrawl 克隆仓库,跑docker compose up就能起一套完整服务(API、worker、Redis、Playwright、数据库都在里面),适合数据不出内网的场景。
接着往哪走
完整功能清单看官方 README,动手示例都放在examples 目录里,挑一个最接近你任务的抄着改就行。
【免费下载链接】firecrawlThe context API to search, scrape, and interact with the web at scale. 🔥项目地址: https://gitcode.com/GitHub_Trending/fi/firecrawl
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考