返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

Firecrawl:颠覆传统爬虫的AI黑科技,如何为LLM时代赋能

[复制链接]
链载Ai 显示全部楼层 发表于 昨天 20:42 |阅读模式 打印 上一主题 下一主题

FireCrawl是什么

‌FireCrawl‌是由Mendable.ai开发的一款强大的AI网络爬虫工具,能够智能爬取网站及其所有可访问的子页面数据,并将收集的内容转换为Json,Markdown,Html等多种格式数据。它具备强大的抓取能力,无论是静态页面还是复杂的动态页面,甚至JavaScript呈现的内容都能抓取到。

FireCrawl特别适用于AI模型训练、检索增强生成(RAG)和数据驱动的开发等多种应用场景‌

FireCrawl 的主要功能

爬取:自动爬取网站及其所有可访问的子页面,将内容转换为 Json,Markdown等格式数据。 抓取:抓取单个 URL 的内容,并以 Markdown、结构化数据等格式提供。 映射:输入网站 URL,快速获取网站上的所有链接。 LLM 提取:从抓取的页面中提取结构化数据。 批量抓取:同时抓取多个 URL。 网页交互:在抓取内容之前,对网页执行点击、滚动、输入等操作。 搜索:搜索网络,获取最相关的结果,并抓取页面内容。

FireCrawl 的技术原理

网页爬取:FireCrawl利用网络爬虫技术,通过递归访问网站页面,根据提供的URL自动爬取网站及其所有可访问的子页面。它能够处理动态网页内容,并利用大型语言模型进行数据提取‌。 内容解析:FireCrawl解析网页的HTML内容,提取所需数据。它能够处理由JavaScript渲染的动态内容,确保能抓取由用户交互生成的数据‌。 数据提取与结构化:FireCrawl基于自然语言处理技术,从非结构化的网页内容中提取结构化数据。它将提取的内容转换成适合大型语言模型处理的格式,如Markdown或结构化数据‌。 动态内容处理:FireCrawl能够处理动态内容,包括那些需要通过用户交互才能生成的内容。这使得它适用于各种复杂的网站抓取任务‌。 反反爬虫技术:为了绕过网站的反爬虫机制,FireCrawl使用代理、自定义头部等技术,确保能够顺利抓取数据‌。

实例演示

获取FireCrawl API KEY

1、登录网站:https://firecrawl.dev, 注册账号 2、点击Dashboard按钮 3、复制API KEY

安装firecrawl库

pip install firecrawl-py

根目录下创建.env文件

FIRECRAWL_API_KEY=FireCrawlAPIKEY

抓取单个页面数据

 defscrape_page(self, url: str, schema: BaseModel,
formats: List[str] = ['json'],
prompt: Optional[str] = None)-> Dict[str, Any]:
"""抓取单个页面的数据

Args:
url: 要抓取的URL
schema: Pydantic模型,定义返回数据的结构
formats: 返回数据的格式列表,默认为['json']
prompt: 可选的提示信息,帮助抓取特定内容

Returns:
包含抓取结果的字典
"""
try:
params = {
'formats': formats,
'jsonOptions': {
'schema': schema.model_json_schema(),
}
}

ifprompt:
params['jsonOptions']['prompt'] = prompt

logger.info(f"开始抓取页面:{url}")
result = self.app.scrape_url(url, params)
logger.info(f"页面抓取完成:{url}")
returnresult
exceptExceptionase:
logger.error(f"抓取页面时出错:{url}, 错误:{str(e)}")
raise

爬取网站数据

 defcrawl_website(self, url: str, schema: BaseModel,
limit: int =10, max_depth: int =2,
formats: List[str] = ['json'],
prompt: Optional[str] = None)-> List[Dict[str, Any]]:
"""爬取整个网站或指定深度的多个页面

Args:
url: 起始URL
schema: Pydantic模型,定义返回数据的结构
limit: 最大抓取页面数量
max_depth: 最大抓取深度
formats: 返回数据的格式列表,默认为['json']
prompt: 可选的提示信息,帮助抓取特定内容

Returns:
包含所有抓取结果的列表
"""
try:
params = {
'limit': limit,
'maxDepth': max_depth,
'scrapeOptions': {
'formats': formats,
'jsonOptions': {
'schema': schema.model_json_schema(),
}
}
}

ifprompt:
params['scrapeOptions']['jsonOptions']['prompt'] = prompt

logger.info(f"开始爬取网站:{url}, 限制:{limit}页, 深度:{max_depth}")
results = self.app.crawl_url(url, params)
logger.info(f"网站爬取完成:{url}, 共抓取{len(results)}个结果")
returnresults
exceptExceptionase:
logger.error(f"爬取网站时出错:{url}, 错误:{str(e)}")
raise

定义结构化数据

classProduct(BaseModel):
"""产品信息模型"""
name: str = Field(description='产品名称')
price: Optional[str] = Field(description='产品价格')
description: Optional[str] = Field(description='产品描述')
rating: Optional[float] = Field(description='产品评分')


classProductList(BaseModel):
"""产品列表模型"""
products: List[Product] = Field(description='产品列表')

输出Json格式数据

{
"metadata": {
"viewport":"width=device-width, initial-scale=1",
"title":"Your Store",
"description":"My Store",
"language":"en",
"scrapeId":"aa78ed8b-5a05-4cd9-b679-0a81012abcd1",
"sourceURL":"https://demo.opencart.com/",
"url":"https://demo.opencart.com/",
"statusCode":200
},
"json": {
"products": [
{
"name":"MacBook",
"price":"$602.00",
"description":"owered by an Intel Core 2 Duo processor at speeds up to 2.16GHz, t..",
"rating":null
},
{
"name":"iPhone",
"price":"$123.20",
"description":"iPhone is a revolutionary new mobile phone that allows you to make a call by simply tapping a name o..",
"rating":null
},
{
"name":"Apple Cinema 30\"",
"price":"$110.00",
"description":"The 30-inch Apple Cinema HD Display delivers an amazing 2560 x 1600 pixel resolution. Designed speci..",
"rating":null
},
{
"name":"Canon EOS 5D",
"price":"$98.00",
"description":"Canon's press material for the EOS 5D states that it 'defines (a) new D-SLR category', while we're n..",
"rating":null
}
]
}
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ