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

news2024/12/17 18:43:38

这里写目录标题

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

一、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 AsyncWebCrawler

async def main():
    async with AsyncWebCrawler() as crawler:
        result = await crawler.arun(
            url="https://example.com"
        )
        print(result.markdown)  # Print clean markdown content

if __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数据的实战样例。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HuLa——一款基于 Tauri+Vue3 构建的桌面即时通讯应用

文章目录 一、HuLa简介二、技术栈介绍三、安装运行四、界面体验五、开源地址 一、HuLa简介 HuLa 是一个基于 Tauri、Vite 5、Vue 3 和 TypeScript 构建的即时通讯系统。它利用了 Tauri 的跨平台能力和 Vue 3 的响应式设计,结合了 TypeScript 的类型安全特性和 Vite…

websocket_asyncio

WebSocket 和 asyncio 指南 简介 本指南涵盖了使用 Python 中的 websockets 库进行 WebSocket 编程的基础知识,以及 asyncio 在异步非阻塞 I/O 中的作用。它提供了构建高效 WebSocket 服务端和客户端的知识,以及 asyncio 的特性和优势。 1. 什么是 WebS…

《Java核心技术I》Swing用户界面组件

Swing和模型-视图-控制器设计模式 用户界面组件各个组成部分,如按钮,复选框,文本框或复杂的树控件,每个组件都有三个特征: 内容,如按钮的状态,文本域中的文本。外观,颜色&#xff0c…

如何通过递延型指标预测项目的长期成果?

递延型指标(Deferred Metrics)是指那些并不立即反映或直接影响当前操作、决策或行为的指标,而是随着时间的推移,才逐渐显现出影响效果的指标。这类指标通常会在一段时间后反映出来,或者需要一定的周期才能展现其成果或…

uni-app开发AI康复锻炼小程序,帮助肢体受伤患者康复!

**提要:**近段时间我们收到多个康复机构用户,咨询AI运动识别插件是否可以应用于肢力运动受限患者的康复锻炼中来,插件是可以应用到AI康复锻炼中的,今天小编就为您介绍一下AI运动识别插件在康腹锻炼中的应用场景。 一、康复机构的应…

C++(十八)

前言: 本文依据上一篇,继续对C中的函数进行学习。 一,内联函数。 再执行函数代码时,比不使用函数花费了更多时间,因为总结步骤,传递参数和返回值都很花费时间。 因此,在调试小型函数时&…

如何在 Ubuntu 上安装 NodeBB 并使用 Nginx 反向代理

简介 NodeBB 是一款基于 Node.js 的开源论坛软件,为在线社区提供了现代化和响应式的解决方案。在 Ubuntu Linux 上运行的 NodeBB 利用了操作系统的强大性和灵活性,以提供高性能和可扩展性。它结合了 MongoDB 或 Redis 进行数据库管理,使其能…

【UE5 C++课程系列笔记】09——多播委托的基本使用

目录 多播委托——申明委托 一、DECLARE_MULTICAST_DELEGATE 二、DECLARE_DYNAMIC_MULTICAST_DELEGATE 多播委托——绑定委托 一、Add 二、AddStatic 三、AddRaw 四、AddSP 五、AddUObject 六、Remove 七、RemoveAll 多播委托——执行 上一篇:【UE5 C课程…

车牌识别OCR授权:助力国产化升级,全面提升道路监控效率

政策背景:国产化升级,推动道路监控产业转型 随着国家对信息安全的重视,国内各大公安、政企机构已进入全面升级国产化平台的实施阶段。根据最新的政策要求,公安和政府部门必须在未来三年内完成平台的国产化替换工作。这一举措不仅…

无人机推流直播平台EasyDSS视频技术如何助力冬季森林防火

冬季天干物燥,大风天气频繁,是森林火灾的高发期。相比传统的人力巡查,无人机具有更高的灵敏度和准确性,尤其在夜间或浓雾天气中,依然能有效地监测潜在火源。 无人机可以提供高空视角和实时图像传输,帮助巡…

linux下查看nginx的安装路径

一般会安装在默认位置下:/usr/local/openresty/nginx 或/usr/local/nginx 查看nginx运行进程,mast process 后面一般是nginx 的安装目录 ps -aux|grep nginx执行ls -l /proc/进程号/exe 会打印出安装/运行位置 ps -aux|grep nginx ls -l /proc/进程号/ex…

Python随机抽取Excel数据并在处理后整合为一个文件

本文介绍基于Python语言,针对一个文件夹下大量的Excel表格文件,基于其中每一个文件,随机从其中选取一部分数据,并将全部文件中随机获取的数据合并为一个新的Excel表格文件的方法。 首先,我们来明确一下本文的具体需求。…

网络基础 - TCP/IP 五层模型

文章目录 一、OSI 参考模型中各个分层的作用1、应用层2、表示层3、会话层4、传输层5、网络层6、数据链路层7、物理层 二、OSI 参考模型通信处理示例三、TCP/IP1、定义2、规范 - RFC(Request For Comment) 一、OSI 参考模型中各个分层的作用 1、应用层 2、表示层 负责设备固有数…

探索Web3:从去中心化应用到全球数字化未来

Web3 是互联网发展的下一步,它通过去中心化的理念重新定义了数字世界。与传统的Web2相比,Web3将数据主权交还给用户,让每个人都可以在没有中介的情况下安全地交换信息和价值。本文将探索Web3的基本概念,去中心化应用(D…

pydub AudioSegment实现音频重采样 - python 实现

DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 需要更多数据资源和技术解决方案,知识星球: “DataBall - X 数据球(free)” -------------------------------------------------------------…

uniapp/HBuilder X引入weex报错weex is not defined

出现错误: ‍[⁠ReferenceError⁠]‍ {message: "weex is not defined"} 在www.iconfont.cn把想要的图标放进个人项目中并且下载css文件: 进入HBuilder自己创建的项目中添加一个目录common,添加一个文件free-icon.css 把刚才下载…

音频进阶学习八——傅里叶变换的介绍

文章目录 前言一、傅里叶变换1.傅里叶变换的发展2.常见的傅里叶变换3.频域 二、欧拉公式1.实数、虚数、复数2.对虚数和复数的理解3.复平面4.复数和三角函数5.复数的运算6.欧拉公式 三、积分运算1.定积分2.不定积分3.基本的积分公式4.积分规则线性替换法分部积分法 5.定积分计算…

ActiveMQ 反序列化漏洞CVE-2015-5254复现

文章目录 一、产生原因二、利用条件三、利用过程四、PoC(概念验证)五、poc环境验证使用find搜索vulhub已安装目录打开activeMQ组件查看配置文件端口启动镜像-文件配置好后对于Docker 镜像下载问题及解决办法设置好镜像源地址,进行重启docker查…

主成分分析法大全(包括stata+matlab)

数据简介:主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。在实际课题中,为了…

qt中tr的使用

在 Qt 中使用 tr 函数对字符串进行翻译时,通常会通过 Qt Linguist 工具来处理翻译。以下是一个基本的步骤说明,展示如何将 QPushButton *btnnew QPushButton(tr("Hello World"),this); 翻译成其他语言,比如中文: 1.创建…