Firecrawl 免费自部署:5 步把任意网页变成 LLM 能读的 Markdown

发布时间:2026/8/28 9:03:05
Firecrawl 免费自部署:5 步把任意网页变成 LLM 能读的 Markdown Firecrawl 免费自部署5 步把任意网页变成 LLM 能读的 Markdown【免费下载链接】firecrawlThe context API to search, scrape, and interact with the web at scale. 项目地址: https://gitcode.com/GitHub_Trending/fi/firecrawlAI 应用要看懂网页先过内容这一关。原始 HTML 里塞满脚本和广告标签直接喂给大模型既费 token 又跑偏。Firecrawl 是一个开源的网页抓取 API你给它一个 URL它还你干净的 Markdown 或结构化 JSON。它支持单页抓取、全站爬取、站点 URL 测绘还能在 JS 渲染页面上点击、滚动后再取内容。下文只讲一件事——把它部署到自己机器上并从第一个成功的请求一直调到批量抓取。一条请求走完全链路动手前先弄清它内部怎么分工后面排错全靠这张图。你向 API默认端口 3002发起 POST 请求这是输入API 把任务写入队列RabbitMQ PostgreSQL这是规则调度worker 拉起 Playwright 无头浏览器加载页面等待 JS 渲染完成后把 HTML 转成 Markdown 返回这是输出。所以堆栈里每个组件都不可少服务职责少了它的后果api接收请求、返回结果一切归零playwright-service渲染 JS 页面并抓取动态站点拿不到内容redis / rabbitmq限流与任务队列请求直接失败nuq-postgres任务状态持久化异步任务无法查询注意自部署版USE_DB_AUTHENTICATION默认是false调用时不带Authorization 头AI 增强功能如 agent需要配置OPENAI_API_KEY不配也不影响抓取主线。10 分钟跑通第一次抓取前提机器已装好 Docker内存建议 8GB 以上compose 文件给 api 和 playwright 分别限了 8G 和 4G 上限机器内存不够就改apps/api和apps/playwright-service-ts两处mem_limit。 克隆代码到本地git clone https://gitcode.com/GitHub_Trending/fi/firecrawl进入目录启动全部服务cd firecrawl docker compose up -d --build首次构建要编译 API 镜像等 5-15 分钟。用docker compose logs -f api盯日志出现 3002 端口监听字样即就绪。 发第一个请求验证抓取是否生效curl -X POST http://localhost:3002/v2/scrape \ -H Content-Type: application/json \ -d {url:https://example.com,formats:[markdown]}返回 JSON 里data.markdown字段有干净的正文恭喜链路通了。提示formats是输出开关markdown、html、json、screenshot可任意组合。三种常用抓法参数照抄即可同一个/v2/scrape端点能覆盖大部分场景区别只在参数。下面三套配置可直接复制。单页深挖scrape参数建议值作用formats[markdown,json]正文给模型、结构化数据给代码onlyMainContenttrue剥掉导航栏和页脚省 tokenwaitFor3000给 JS 动态内容留 3 秒渲染时间actions滚动/点击指令数组处理加载更多类页面适合文档页、商品页、单篇文章入库。全站采集crawl参数建议值作用limit100单任务最多抓 100 页防失控CRAWL_CONCURRENT_REQUESTS10.env 里设并发抓取数调高更快也更激进scrapeOptions.formats[markdown]每页的输出格式适合整站文档、帮助中心全量入库。注意 crawl 是异步任务接口先返回任务 ID用GET /v2/crawl/{id}轮询到status: completed才拿数据各语言 SDK 已帮你自动轮询。先摸底再动手map参数建议值作用url站点根域名测绘入口search关键词可选按相关性筛出目标 URL适合爬取前先拿到完整 URL 清单再决定抓哪些、批量抓多少。另外多个已知 URL 一次性抓完用/v2/batch_scrape一次传几百个链接比循环单抓省得多。踩坑清单症状、原因、处理抓回来的是空壳或报错症状markdown为空或提示页面加载失败可能原因页面全靠 JS 渲染默认等待时间不够处理加waitFor: 5000仍不行就在actions里加一次滚动后再取请求被拒提示权限问题症状401/403可能原因自部署没开数据库认证却带了Authorization头或反过来开了认证却没配库处理保持USE_DB_AUTHENTICATIONfalse就不带头调用要上认证就同时完成数据库 schema 配置二者必须一致请求发不出去症状连接拒绝或超时可能原因3002 端口被占用或 compose 里PORT映射没生效处理docker compose logs api看启动日志换端口时.env里设PORT3003后重启crawl 任务一直查不到结果症状轮询始终不是completed可能原因limit设得太大或目标站反爬严格处理先用map确认站点规模把limit降到 50 以内试跑注意默认配置会遵守目标站点的 robots.txt商用前请自行确认合规边界。部署完成度自检五条全过说明这套 Firecrawl 已经可以接进你的 AI 流水线POST /v2/scrape返回非空 markdown且无 JS 渲染缺失GET /v2/map能在几秒内列出目标站 URL 清单一个小站 crawl 任务能轮询到completed页数与limit吻合重启 Docker 后docker compose restart以上请求依然正常目标站点被 robots.txt 屏蔽的 URL 确实没有被抓取接下来可以做的事很具体把formats换成json配合 schema 出结构化字段或者在.env里配一个模型服务解锁 AI 功能。按需来别一次全开。【免费下载链接】firecrawlThe context API to search, scrape, and interact with the web at scale. 项目地址: https://gitcode.com/GitHub_Trending/fi/firecrawl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考