Project Icon

crawl4ai

开源网页爬虫框架 支持AI应用和大型语言模型

Crawl4AI是一个开源的网页爬虫框架,为AI应用和大型语言模型优化。该框架支持多URL并行爬取、媒体标签和链接提取、自定义钩子和JavaScript执行,并提供多种数据提取策略。v0.2.77版本改进了Docker支持,升级Selenium,并优化了性能。Crawl4AI简化了网页数据采集过程,为AI开发提供了实用的工具。

Crawl4AI v0.2.77 🕷️🤖

GitHub 星标 GitHub 分支 GitHub 问题 GitHub 拉取请求 许可证

Crawl4AI 简化了网络爬虫和数据提取,使其适用于大型语言模型(LLMs)和人工智能应用。🆓🌐

[v0.2.77] - 2024-08-02

功能、性能和跨平台兼容性方面的重大改进!🚀

  • 🐳 Docker 增强
    • 显著改进的 Dockerfile,便于在 Linux、Mac 和 Windows 上安装。
  • 🌐 官方 Docker Hub 镜像
    • 在 Docker Hub 上发布了我们的第一个官方镜像,简化部署流程(unclecode/crawl4ai)。
  • 🔧 Selenium 升级
    • 移除了对 ChromeDriver 的依赖,现在使用 Selenium 的内置功能以获得更好的兼容性。
  • 🖼️ 图像描述
    • 实现了为网页提取的图像生成文本描述的功能。
  • 性能提升
    • 各种改进以提高整体速度和性能。

立即尝试!

✨ 在这里体验 在 Colab 中打开

✨ 访问我们的文档网站

✨ 查看演示

特性 ✨

  • 🆓 完全免费和开源
  • 🤖 适用于 LLM 的输出格式(JSON、清洁的 HTML、markdown)
  • 🌍 支持同时爬取多个 URL
  • 🎨 提取并返回所有媒体标签(图像、音频和视频)
  • 🔗 提取所有外部和内部链接
  • 📚 提取页面的元数据
  • 🔄 用于身份验证、头部和爬取前页面修改的自定义钩子
  • 🕵️ 用户代理自定义
  • 🖼️ 截取页面截图
  • 📜 在爬取前执行多个自定义 JavaScript
  • 📚 各种分块策略:基于主题、正则表达式、句子等
  • 🧠 高级提取策略:余弦聚类、LLM 等
  • 🎯 支持 CSS 选择器
  • 📝 传递指令/关键词以优化提取

Crawl4AI

🌟 向 v0.2.77 的贡献者致敬!

非常感谢这些杰出的贡献者,使这个版本成为可能:

你们的贡献正在推动 Crawl4AI 向前发展!🚀

酷炫示例 🚀

快速入门

from crawl4ai import WebCrawler

# 创建 WebCrawler 实例
crawler = WebCrawler()

# 预热爬虫(加载必要的模型)
crawler.warmup()

# 在 URL 上运行爬虫
result = crawler.run(url="https://www.nbcnews.com/business")

# 打印提取的内容
print(result.markdown)

如何安装 🛠

使用 pip 🐍

virtualenv venv
source venv/bin/activate
pip install "crawl4ai @ git+https://github.com/unclecode/crawl4ai.git"

使用 Docker 🐳

# 对于 Mac 用户(M1/M2)
# docker build --platform linux/amd64 -t crawl4ai .
docker build -t crawl4ai .
docker run -d -p 8000:80 crawl4ai

使用 Docker Hub 🐳

docker pull unclecode/crawl4ai:latest
docker run -d -p 8000:80 unclecode/crawl4ai:latest

以速度为先的设计 🚀

这个库最重要的设计原则也许就是速度。我们需要确保它能够尽可能快速地并行处理多个链接和资源。将这种速度与 Groq 等快速 LLM 结合起来,结果将会令人惊叹。

import time
from crawl4ai.web_crawler import WebCrawler
crawler = WebCrawler()
crawler.warmup()

start = time.time()
url = r"https://www.nbcnews.com/business"
result = crawler.run( url, word_count_threshold=10, bypass_cache=True)
end = time.time()
print(f"耗时:{end - start}")

让我们看看上面代码片段的计算时间:

[日志] 🚀 爬取完成,成功:True,耗时:1.3623387813568115 秒
[日志] 🚀 内容提取完成,成功:True,耗时:0.05715131759643555 秒
[日志] 🚀 提取过程,耗时:0.05750393867492676 秒。
总耗时:1.439958095550537

从页面获取内容花费了 1.3623 秒,提取内容花费了 0.0575 秒。🚀

从网页提取结构化数据 📊

从官方页面爬取所有 OpenAI 模型及其费用。

import os
from crawl4ai import WebCrawler
from crawl4ai.extraction_strategy import LLMExtractionStrategy
from pydantic import BaseModel, Field

class OpenAIModelFee(BaseModel):
    model_name: str = Field(..., description="OpenAI 模型的名称。")
    input_fee: str = Field(..., description="OpenAI 模型的输入 token 费用。")
    output_fee: str = Field(..., description="OpenAI 模型的输出 token 费用。")

url = 'https://openai.com/api/pricing/'
crawler = WebCrawler()
crawler.warmup()

result = crawler.run(
        url=url,
        word_count_threshold=1,
        extraction_strategy= LLMExtractionStrategy(
            provider= "openai/gpt-4o", api_token = os.getenv('OPENAI_API_KEY'), 
            schema=OpenAIModelFee.schema(),
            extraction_type="schema",
            instruction="""从爬取的内容中,提取所有提到的模型名称以及它们的输入和输出 token 费用。
            不要遗漏整个内容中的任何模型。一个提取的模型 JSON 格式应该像这样:
            {"model_name": "GPT-4", "input_fee": "US$10.00 / 1M tokens", "output_fee": "US$30.00 / 1M tokens"}。"""
        ),            
        bypass_cache=True,
    )

print(result.extracted_content)

执行 JS、使用 CSS 选择器过滤数据和聚类

from crawl4ai import WebCrawler
from crawl4ai.chunking_strategy import CosineStrategy

js_code = ["const loadMoreButton = Array.from(document.querySelectorAll('button')).find(button => button.textContent.includes('Load More')); loadMoreButton && loadMoreButton.click();"]

crawler = WebCrawler()
crawler.warmup()

result = crawler.run(
    url="https://www.nbcnews.com/business",
    js=js_code,
    css_selector="p",
    extraction_strategy=CosineStrategy(semantic_filter="technology")
)

print(result.extracted_content)

文档 📚

有关详细文档,包括安装说明、高级功能和 API 参考,请访问我们的文档网站

贡献 🤝

我们欢迎开源社区的贡献。查看我们的贡献指南以获取更多信息。

许可证 📄

Crawl4AI 根据 Apache 2.0 许可证发布。

联系方式 📧

如有问题、建议或反馈,请随时联系:

祝爬取愉快!🕸️🚀

项目收藏历史

项目收藏历史图表

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号