当前位置: 首页 > news >正文

Crawl4AI:开源的AI友好型网页爬虫与数据抓取工具

🚀🤖 Crawl4AI:开源的外链图片转存中…(img-PtoLd5XX-1753976207289)]

Crawl4AI是最受欢迎的开源项目之一,它提供了高速且AI友好的网页爬虫能力,专为大型语言模型(LLMs)、AI代理和数据管道设计。它是完全开源的,灵活且具备实时性能,开发者可以以无与伦比的速度、精确度和部署简易性进行开发。

✨ 查看最新版本更新 v0.7.0

🎉 版本 0.7.0现已推出! 该版本引入了「自适应智能更新」,提供了突破性的功能:自适应爬虫能够学习网站模式、无限页面的虚拟滚动支持、具有三层评分的智能链接预览、异步URL播种器实现大范围发现以及显著的性能提升。

🧐 为什么选择Crawl4AI?

  1. 专为LLMs设计:生成智能、简明的Markdown,优化用于RAG和微调应用。
  2. 快速高效:提供6倍于传统爬虫的实时、成本效益高的性能。
  3. 灵活的浏览器控制:提供会话管理、代理和自定义钩子,确保无缝的数据访问。
  4. 启发式智能:采用先进算法进行高效提取,减少对昂贵模型的依赖。
  5. 开源与可部署性:完全开源,无需API密钥,准备好进行Docker和云集成。
  6. 蓬勃发展的社区:由活跃的社区维护,现为GitHub上排名第一的项目。

🚀 快速开始

  1. 安装Crawl4AI
# 安装包
pip install -U crawl4ai# 对于预发布版本
pip install crawl4ai --pre# 运行安装后的设置
crawl4ai-setup# 验证安装情况
crawl4ai-doctor

如果遇到与浏览器相关的问题,可以手动安装浏览器:

python -m playwright install --with-deps chromium
  1. 用Python运行简单的网页爬虫
import asyncio
from crawl4ai import *async def main():async with AsyncWebCrawler() as crawler:result = await crawler.arun(url="https://www.nbcnews.com/business",)print(result.markdown)if __name__ == "__main__":asyncio.run(main())
  1. 或使用新的命令行接口
# 基本爬取,输出Markdown格式
crwl https://www.nbcnews.com/business -o markdown# 使用BFS策略深度爬取,最多10页
crwl https://docs.crawl4ai.com --deep-crawl bfs --max-pages 10# 利用LLM提取与特定问题相关的信息
crwl https://www.example.com/products -q "提取所有产品价格"

✨ 特性

📝 Markdown生成

  • 🧹 干净的Markdown:生成结构化的Markdown,准确格式化。
  • 🎯 合适的Markdown:基于启发式的筛选,移除冗余和不相关部分,实现AI友好的处理。
  • 🔗 引用和参考:将页面链接转换为编号的参考列表,提供干净的引用。
  • 🛠️ 自定义策略:用户可以创建自己特定需求的Markdown生成策略。
  • 📚 BM25算法:使用BM25过滤提取核心信息,剔除无关内容。

📊 结构化数据提取

  • 🤖 LLM驱动的提取:支持所有LLMs(开源和专有),进行结构化数据提取。
  • 🧱 分块策略:实现基于主题、正则表达式和句子级别的分块处理。
  • 🌌 余弦相似度:根据用户查询找到相关内容块,用于语义提取。
  • 🔎 CSS基础提取:利用XPath和CSS选择器快速进行模式化数据提取。
  • 🔧 模式定义:定义自定义模式,根据重复模式提取结构化的JSON。

🌐 浏览器集成

  • 🖥️ 管理浏览器:使用用户拥有的浏览器,避免机器人检测。
  • 🔄 远程浏览器控制:连接到Chrome开发者工具协议,实现远程、大规模的数据提取。
  • 👤 浏览器配置器:创建和管理持久的配置文件,保存认证状态、cookie和设置。
  • 🔒 会话管理:保存浏览器的状态,重复使用,实现多步骤爬取。
  • 🧩 代理支持:无缝连接具备认证的代理,实现安全访问。
  • ⚙️ 完整的浏览器控制:修改头部、cookie、用户代理等,实现定制化爬取设置。
  • 🌍 多浏览器支持:兼容 Chromium、Firefox 和 WebKit。
  • 📐 动态视口调整:自动调整浏览器视口以匹配页面内容,确保完整渲染和捕获所有元素。

🔎 爬取与抓取

  • 🖼️ 媒体支持:提取图片、音频、视频及响应式图片格式,如srcsetpicture
  • 🚀 动态爬取:执行JS代码并等待异步或同步继续提取动态内容。
  • 📸 截图:在爬取过程中捕获网页截图,用于调试或分析。
  • 📂 原始数据爬取:直接处理原始HTML(raw:)或本地文件(file://)。
  • 🔗 全面链接提取:提取内部、外部链接及嵌入的iframe内容。
  • 🛠️ 可自定义钩子:在每一步定义钩子,定制爬虫行为。
  • 💾 缓存:缓存数据以提高速度并避免冗余抓取。
  • 📄 元数据提取:从网页提取结构化元数据。
  • 📡 iframe内容提取:无缝提取嵌入的iframe内容。
  • 🕵️ 懒加载处理:等待图像完全加载,确保没有内容因懒加载而错过。
  • 🔄 全页扫描:模拟滚动加载并捕获所有动态内容,适用于无限滚动页面。

🚀 部署

  • 🐳 Docker化设置:优化的Docker镜像,配有FastAPI服务器,方便部署。
  • 🔑 安全认证:内置JWT令牌认证,保障API安全。
  • 🔄 API网关:一键部署,配合安全令牌认证,适用于API工作流。
  • 🌐 可扩展架构:为大规模生产而设计,优化服务器性能。
  • ☁️ 云部署:为主要云平台准备的即可部署配置。

🔬 高级用法示例

本项目提供了丰富的示例,帮助用户充分利用其能力。以下是一些流行的用法示例:

生成干净的Markdown

import asyncio
from crawl4ai import AsyncWebCrawler, CrawlerRunConfigasync def main():browser_config = BrowserConfig(headless=True,verbose=True,)run_config = CrawlerRunConfig(markdown_generator=DefaultMarkdownGenerator())async with AsyncWebCrawler(config=browser_config) as crawler:result = await crawler.arun(url="https://docs.example.com/",config=run_config)print(result.markdown)if __name__ == "__main__":asyncio.run(main())

结构化数据提取

import asyncio
from crawl4ai import AsyncWebCrawler, JsonCssExtractionStrategyasync def main():schema = {"name": "Example Data","baseSelector": "div.data-section","fields": [{"name": "title","selector": "h1","type": "text",},{"name": "description","selector": "p.description","type": "text",},]}extraction_strategy = JsonCssExtractionStrategy(schema)async with AsyncWebCrawler() as crawler:result = await crawler.arun(url="https://www.example.com/data",config=run_config)print(result.extracted_content)if __name__ == "__main__":asyncio.run(main())

使用自己的浏览器

import os, asyncio
from crawl4ai import AsyncWebCrawler, BrowserConfigasync def main():user_data_dir = os.path.join("~", ".crawl4ai", "browser_profile")os.makedirs(user_data_dir, exist_ok=True)browser_config = BrowserConfig(headless=True,user_data_dir=user_data_dir,use_persistent_context=True,)async with AsyncWebCrawler(config=browser_config) as crawler:result = await crawler.arun(url="https://example.com/login",config=run_config)print("成功爬取内容:", result.markdown)if __name__ == "__main__":asyncio.run(main())

✨ 最新更新

版本0.7.0发布亮点 - 自适应智能更新

  • 🧠 自适应爬虫:新的爬虫系统能够自动学习和适应网站模式。
  • 🌊 虚拟滚动支持:全面提取来自无限滚动页面的内容。
  • 🔗 智能链接分析:采用三层评分机制,实现智能链接优先级。
  • 🎣 异步URL播种器:在数秒内发现数千个URL。

完整细节请查看我们的0.7.0发布说明。

同类项目介绍

在开源领域,还有一些与Crawl4AI类似的项目,它们也致力于提供强大的数据抓取能力:

  1. Scrapy:一个开源网页抓取框架,支持深度爬取,扩展性强,具有良好的文档和社区支持。
  2. Beautiful Soup:主要用于解析HTML和XML文档,能够方便地进行数据提取。
  3. Playwright:支持自动化网页测试的框架,具有强大的交互功能,适合网页爬取和测试场景。

这些项目各有千秋,根据需求的不同可以选择适合的工具进行使用。

http://www.dtcms.com/a/316741.html

相关文章:

  • 电子秤利用Websocket做为Client向MES系统推送数据
  • 软件测试——接口自动化
  • STM32内部读写FLASH
  • 90、【OS】【Nuttx】【启动】栈溢出保护:配置项解析
  • Swift 实战:用队列巧解 LeetCode 346 数据流中的移动平均数
  • 服务器端口连通性的测试工具和方法
  • XXL-JOB调度中心、执行器、Job之间的关系
  • MQTT:消息详解
  • 备忘录记事本 任务清单 html
  • 基于铁头山羊STM32的平衡车电机转速开环闭环matlab仿真
  • 线性规划最优解
  • 饿了么招java开发咯
  • tarjan找SCC,缩点建DAG,找唯一源头节点
  • 强光干扰下误报率↓82%!陌讯多模态融合算法在火焰识别的落地优化
  • 不可变集合
  • nflsoi 7.31 题解
  • 信息化项目验收,项目成功的最后确认
  • Redis中的sdshdr的len和alloc那块的知识点详解
  • 【经验记录贴】在windows系统中启动服务
  • CMU-15445(7)——PROJECT#2-BPlusTree-Task#2Task#3
  • BGA 芯片贴片加工关键注意事项
  • Fiddler 中文版实战指南,如何构建高效的 API 调试工作流?
  • 第13届蓝桥杯Scratch_选拔赛_真题2021年11月27日
  • 老旧体育场馆照明翻新:预算有限?3 步实现 “低成本升级”
  • 在具身智能火热加持下,看 2025 年机器人学术年会中的热点主题。PNP机器人展示力控、灵巧手捕捉等案例。
  • 利用链上数据进行数字资产量化因子发现
  • 计划任务:被忽视的网络与系统安全边界
  • Linux-Day10.系统安全保护web服务管理
  • 【springcloud的配置文件不生效】
  • Linux系统:基础I/O