Crawl4AI:一个为大型语言模型(LLM)和AI应用设计的网页爬虫和数据提取工具实战

news/2024/12/20 8:55:12/

这里写目录标题

  • 一、crawl4AI功能及简介
    • 1、简介
    • 2、特性
  • 二、项目地址
  • 三、环境安装
  • 四、大模型申请
  • 五、代码示例
    • 1.生成markdown
    • 2.结构化数据

crawl4AI_1">一、crawl4AI功能及简介

1、简介

Crawl4AI 是一个开源的网页爬虫和数据抓取工具,一个python项目,主要为大型语言模型(LLM)和 AI 应用提供数据采集和处理服务。

2、特性

  • **开源免费:**遵循 MIT 许可协议或 Apache-2.0 许可协议,开发人员可自由使用、修改和分发源代码,无需支付费用;
  • **专为 LLM 设计:**能够将网页数据处理和清洗成适合 LLM 使用的格式,如 JSON、干净的 HTML 和 Markdown 等,便于后续直接应用于模型训练;
  • **高效性能:**支持并行处理多个 URL,可同时抓取和处理多个网页,极大地提高了数据收集效率,减少大规模数据收集所需时间;
  • **多功能支持:**可以提取网页中的文本、图片、音频、视频等媒体标签,以及元数据、内外部链接等,并能对页面进行截图等操作;
  • **高度可定制:**用户可自定义认证、请求头信息、爬取前页面修改、用户代理以及 JavaScript 脚本执行等,还能根据特定需求自定义爬取深度、频率和提取规则,以适应不同网页结构和数据类型。

二、项目地址

github地址: https://github.com/unclecode/crawl4ai

Crawl4ai官网: https://crawl4ai.com/

三、环境安装

python3.7+
windows8+

四、大模型申请

  • 月之暗面 / Kimi chat

    API key 申请地址:https://platform.moonshot.cn/console/api-keys
    API 文档地址:https://platform.moonshot.cn/docs
    API 定价信息:https://platform.moonshot.cn/docs/price/chat

  • 百度 / 文心一言

    API申请地址:https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application
    API 文档地址:https://cloud.baidu.com/doc/WENXINWORKSHOP/s/flfmc9do2
    API 定价信息:https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Blfmc9dlf

  • 智谱 / GLM

    API key 申请地址:https://bigmodel.cn/usercenter/apikeys
    API 文档地址:https://bigmodel.cn/dev/api
    API 定价信息:https://open.bigmodel.cn/pricing

  • MiniMax

    API key 申请地址:https://platform.minimaxi.com/user-center/basic-information/interface-key
    API 文档地址:https://platform.minimaxi.com/document/notice
    API 定价信息:https://platform.minimaxi.com/document/price

  • 阿里 / 通义千问 (Qwen)

    API key 申请地址:https://dashscope.console.aliyun.com/apiKey
    API 文档地址:https://help.aliyun.com/zh/dashscope/developer-reference
    API 定价信息:https://dashscope.console.aliyun.com/billing

  • 科大讯飞 / 讯飞星火 (Spark)

    API key 申请地址:https://console.xfyun.cn/services/cbm
    API 文档地址:https://www.xfyun.cn/doc/spark/Web.html
    API 定价信息:https://xinghuo.xfyun.cn/sparkapi

  • DeepSeek(深度求索)

    API key 申请地址:https://platform.deepseek.com/api_keys
    API 文档地址:https://platform.deepseek.com/api-docs/zh-cn/
    API 定价信息:https://platform.deepseek.com/api-docs/zh-cn/pricing

五、代码示例

1.生成markdown

import asyncio
from crawl4ai import AsyncWebCrawlerasync def main():async with AsyncWebCrawler() as crawler:result = await crawler.arun(url="https://example.com")print(result.markdown)  # Print clean markdown contentif __name__ == "__main__":asyncio.run(main())

运行结果如下:
在这里插入图片描述

2.结构化数据

import asyncio
import json
import os
from crawl4ai import LLMExtractionStrategy, AsyncWebCrawler
from tenacity import retry, stop_after_attempt, wait_exponential
class LLMExtractionError(Exception):pass
@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=4, max=10))
async def extract_with_retry(crawler, url, extraction_strategy):try:result = await crawler.arun(url=url, extraction_strategy=extraction_strategy, bypass_cache=True)print(result)print(result.extracted_content)print(json.loads(result.extracted_content))return json.loads(result.extracted_content)except Exception as e:raise LLMExtractionError(f"Failed to extract content: {str(e)}")
async def main():async with AsyncWebCrawler(verbose=True) as crawler:try:content = await extract_with_retry(crawler,"https://shop.health-100.cn/goods",LLMExtractionStrategy(provider="openai/moonshot-v1-8k",api_token='这是需要你自己去申请的',instruction="返回当前页面采集的商品的名称和商品价格,json格式返回",base_url='https://api.moonshot.cn/v1'))print("Extracted content:", content)except LLMExtractionError as e:print(f"Extraction failed after retries: {e}")
asyncio.run(main())

输出结果如下:
在这里插入图片描述

以上就是通过crawl4AI的技术将任意网页数据采集生成markdown数据,然后又由大模型将markdown数据结构化成json数据的实战样例。

文章来源:https://blog.csdn.net/m0_37899908/article/details/144519806
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ppmy.cn/news/1556184.html

相关文章

Android通过okhttp下载文件(本文案例 下载mp4到本地,并更新到相册)

使用步骤分为两步 第一步导入 okhttp3 依赖 第二步调用本文提供的 utils 第一步这里不做说明了,直接提供第二步复制即用 DownloadUtil 中 download 为下载文件 参数说明 这里主要看你把 destFileName 下载文件名称定义为什么后缀,比如我定义为 .mp4 下…

YOLO系列,从V1~V10,持续更新(Pytorch实现)

关于YOLOV1 本文主要偏向代码实战,详细的算法原理着墨不多 主要创新: 实现了实时的目标检测 附上YOLOV1论文地址: https://arxiv.org/abs/1506.02640 关于数据 首先要了解该网络架构的输入和输出,以及网络是如何进行训练的。这里…

workman服务端开发模式-应用开发-gateway的onWebSocketConnect开发

一、onWebSocketConnect安全开发一 为什么叫安全开发一,是因为还有两种情况没有考虑好,需要实测中进行修改。第一种情况:个人如果打开两个窗口,访问同一个系统或个人如果打开两种浏览器,两个窗口同时访问一个系统&…

gpu硬件架构

1.简介 NVIDIA在视觉计算和人工智能(AI)领域处于领先地位;其旗舰GPU已成为解决包括高性能计算和人工智能在内的各个领域复杂计算挑战所不可或缺的。虽然它们的规格经常被讨论,但很难掌握各种组件的清晰完整的图景。 这些GPU的高性…

多线程----互斥

以下是关于多线程中互斥相关的详细知识点介绍以及C语言代码示例: 一、互斥的概念与重要性 在多线程编程中,多个线程可能会同时访问和操作共享资源(如全局变量、共享的数据结构等)。如果没有适当的控制机制,就可能导致…

Java 系统稳定性进阶之路:策略、实践与优化

前言 最近在做系统的稳定性治理,有一点心得和感悟,分享、记录和输出一下,走几步要回头看看,沉淀一下。 稳定性建设-八股文 H-热点(Hotkey)R-限流(RateLimiter)A-授权(Authorize)B-隔离(BulkHead)C-熔断(CircuitBreaker)(服务熔…

RK3588平台上YOLOv8模型转换与CentOS 7.8 Docker镜像拉取超时问题解决指南

RK3588平台上YOLOv8模型转换与CentOS 7.8 Docker镜像拉取超时问题解决指南 一、RK3588平台上YOLOv8模型从PT转换为RKNN 背景介绍 YOLOv8的原生模型包含了后处理步骤,其中一些形状超出了RK3588的矩阵计算限制,因此需要对输出层进行一些裁剪。本文将详细…

SpringCloud--SpringCloudAlibaba 对应的版本选择

SpringCloud--SpringCloudAlibaba 对应的版本选择 1、进入官网查看 输入Spring Cloud Alibaba官网_基于Springboot的微服务教程-阿里云 网址,选择文档->点击版本(2023.x) ​ 2、选择版本发布说明,可以看到Spring Cloud Ali…