当前位置: 首页 > 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.lryc.cn/news/611128.html

相关文章:

  • MyBatis实现SQL
  • DM8日常运维命令总结(四)
  • jenkins插件Active Choices的使用通过参数动态控制多选参数的选项
  • 聚焦智能穿戴“下一代消费终端”之争,Meta/微美全息借AI+AR积淀定义行业未来
  • Swift 实战:用队列巧解 LeetCode 346 数据流中的移动平均数
  • 【RabbitMQ】高级特性—持久性、重试机制详解
  • 栈的输入与输出方式
  • 《算法导论》第 4 章 - 分治策略
  • Python Day23程序、进程、线程及多线程实现全解析 例题分析
  • 星图云开发者平台赋能商储油安全管控数字化转型
  • 为什么要选择时序数据库IoTDB?
  • Python爬虫08_Requests聚焦批量爬取图片
  • Pandas 入门:数据分析的得力工具
  • 嵌入式硬件中运放内部底层分析
  • 基于深度学习的医学图像分析:使用CycleGAN实现医学图像风格转换
  • 后量子时代已至?中国量子加密技术突破与网络安全新基建
  • 关于npx react-native run-android下载进程缓慢以及进程卡壳等问题的解决方案。
  • Java 大视界 -- Java 大数据在智能医疗电子病历数据分析与临床决策支持中的应用(382)
  • iOS混淆工具有哪些?技术演进与选型趋势全景解析
  • 企业如何用现代数仓架构挖掘新业务盈利点?AllData产品从目标、路径、结果给出答案
  • Go语言实战案例:使用sync.Mutex实现资源加锁
  • 查看 Redis 某个数据库的内存占用
  • 【前端】网站favicon图标制作
  • 力扣-208.实现Trie(前缀树)
  • C++ - 仿 RabbitMQ 实现消息队列--服务端核心模块实现(六)
  • Linux-Day11.WEB服务,虚拟主机
  • VUE丢失long类型精度,使用 json-bigint 库解析大整数
  • 人工智能领域、图欧科技、IMYAI智能助手2025年7月更新月报
  • 暑期算法训练.14
  • 关于如何SecureCRT软件连接开发板后默认显示大字体,且重启开发板或重新连接时不会重置的方法