ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Firecrawl实战指南:网页抓取、结构化提取到深度研究,一次讲透

Firecrawl实战指南:网页抓取、结构化提取到深度研究,一次讲透 Firecrawl实战指南网页抓取、结构化提取到深度研究一次讲透【免费下载链接】firecrawlThe context API to search, scrape, and interact with the web at scale. 项目地址: https://gitcode.com/GitHub_Trending/fi/firecrawl做竞品调研时你手动复制了 200 个网页再一条条粘进 LLM 提示词里。Firecrawl 把这条链路压缩成一次 API 调用网页抓取后直接输出 LLM 友好的 Markdown再按你定义的 Schema 完成结构化提取。Firecrawl是什么把网站变成可调用的数据源Firecrawl 是一个面向 AI 应用的网页抓取与数据提取 API把任意 URL 或整个网站转换成干净的 Markdown / JSON内置渲染、反爬代理、结构化提取和深度研究能力解决网页数据怎么稳定地喂给模型这个核心问题。快速上手安装、配置、第一次抓取安装pip install firecrawl-py配置在 Firecrawl 控制台注册后拿到 Key设export FIRECRAWL_API_KEY你的key调用三行代码完成第一次抓取下面这段代码抓取一个页面只取 Markdown 正文是后面所有能力的基础from firecrawl import FirecrawlApp app FirecrawlApp(api_keyfc-xxxx) result app.scrape_url(https://example.com/docs, formats[markdown]) print(result[markdown])输出示例# Getting Started Install with npm install ... POST /v2/scrape accepts a URL and returns markdown ...单页抓取与格式转换把网页变成干净的 Markdown语料入库前的清洗是最典型的 Markdown 转换需求原文导航、广告、脚注全都会污染 LLM 的上下文。only_main_contentTrue只保留正文配合links一次拿全正文和站内链接直接入队做 RAG。result app.scrape_url( https://example.com/docs/quickstart, formats[markdown, links], only_main_contentTrue, )输出示例{ markdown: # Quickstart\nInstall with npm ..., links: [https://example.com/docs/api, https://example.com/docs/cli] } 技巧需要 JS 渲染的页面加wait_for1500让动态内容加载完再抓避免拿到空壳。拿到单页 Markdown 后下一个需求通常是只留下我要的字段——这就从格式转换进入结构化提取。结构化提取用 Pydantic 定义数据模型竞品监控里你只关心标题、价格和更新时间而不是整页正文。用 Pydantic 把字段和描述写清楚Firecrawl 的extract能力会按 Schema 从页面里抽数据返回的就是干净 JSON不用自己正则。完整可运行脚本见examples/hacker_news_scraper/firecrawl_scraper.py。from pydantic import BaseModel, Field, List class NewsItem(BaseModel): title: str Field(description新闻标题) upvotes: str Field(description点赞数) class NewsData(BaseModel): news_items: List[NewsItem] data app.scrape_url( https://news.ycombinator.com/, formats[extract], extract{schema: NewsData.model_json_schema()}, )输出示例{ extract: { news_items: [ {title: Show HN: ..., upvotes: 312}, {title: Postgres 17 released, upvotes: 287} ] } } 技巧Field(description...)里写清取值规则如取整数、不带逗号提取准确率明显更高。单页提取解决已知 URL 取字段但真实调研里你连该看哪些页面都还没确定——这就要交给深度研究。深度研究多轮探索与实时进度回调评估目标城市租房市场行情时你不知道该看哪些房源站。deep_research会自己搜索、逐页跟进、交叉分析on_activity回调把每一步search / scrape / analyze实时打出来过程不再黑盒。示例见examples/deep-research-apartment-finder/apartment_finder.py。result app.deep_research( query杭州西湖区两居室租房预算4000以内, max_depth3, # 迭代轮数 time_limit180, # 秒 max_urls20, # 最多分析的URL数 on_activitylambda a: print(f[{a[type]}] {a[message]}), ) print(result[data][finalAnalysis])输出示例[search] 找到 12 个相关来源 [scrape] 已抓取 /listings/hangzhou-xihu [analyze] 正在汇总价格区间 finalAnalysis: 西湖区两居室均价 3600-4200 元性价比集中在文新、三墩板块 ... 技巧max_urls先设 10 试跑一轮确认来源质量后再放大避免预算烧在低质页面上。研究能力回答了看哪里但业务要的不是一次性结果而是持续、自动、带动作的数据流。自动化与业务集成批量抓取加阈值告警价格监控是最直接的落地场景每 30 分钟抓一批商品页按 Schema 提取价格比上一轮跌了就推 Discord。抓取侧用batch_scrape_urls并发处理业务侧就是一个普通的定时脚本。仓库里examples/blog-articles/amazon-price-tracking/有一套完整的价格跟踪实现。results app.batch_scrape_urls(product_urls, formats[markdown]) for r in results[data]: if r[success]: price extract_price_from_markdown(r[markdown]) if price last_price[r[url]]: push_discord(r[url], price)输出示例[OK] /products/b001 price41.47 (last 43.20) [ALERT] 降价 $1.73 - 已推送 Discord 技巧批量任务用poll_interval2控制轮询频率长任务配合 webhook 回调比客户端死等更稳。常见问题与避坑Q遇到 429 限流怎么办按套餐 QPS 控制并发批量接口用poll_interval放慢轮询失败请求指数退避重试即可。Q大页面抓取超时怎么解决timeout单位是毫秒JS 重的页面设 30000或用wait_for只等关键元素出现比干等更快。Q目标站反爬严格怎么办scrape_url支持proxystealth或 auto走隐身代理池多数 Cloudflare 级防护可过仍失败就换actions模拟点击、滚动。Q费用怎么估算按抓取页数计费批量和多格式输出截图、PDF 解析单价更高先用max_urls、limit把规模压到最小再放量。Q非 Python 项目能用吗官方提供 JS、Go、Java、Ruby、PHP、.NET、Rust 等 SDKAPI 形态一致examples/下按语言都有示例。延伸与搭配把抓取的 Markdown 切块后写进向量数据库就是一套现成的 RAG 语料管线定时任务跑批量抓取加阈值告警监控类业务直接落地。仓库examples/目录按场景分了 50 个示例克隆后即可对照git clone https://gitcode.com/GitHub_Trending/fi/firecrawl。能力边界在于你能定义多准的 Schema下一步值得试的是把extract的字段描述写成业务语言而不是字段名直译。【免费下载链接】firecrawlThe context API to search, scrape, and interact with the web at scale. 项目地址: https://gitcode.com/GitHub_Trending/fi/firecrawl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表