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

这里写目录标题

  • 一、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 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数据的实战样例。

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

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

相关文章

游戏引擎学习第50天

仓库: https://gitee.com/mrxiao_com/2d_game Minkowski 这个算法有点懵逼 回顾 基本上,现在我们所处的阶段是,回顾最初的代码,我们正在讨论我们希望在引擎中实现的所有功能。我们正在做的版本是初步的、粗略的版本,涵盖我们认…

深度解读:Top14金融顶刊

作者Toby:来源:Python风控模型,Top14金融顶刊 各位同学好,我是Toby老师,今天为大家介绍金融风控领域的顶级学术期刊,用于小论文发布平台参考。 金融风控领域内有许多顶级学术期刊,它们发表高质…

数据库管理-第271期 Oracle 23ai:用MongoDB的方式来操作JSON二元性(20241214)

数据库管理271期 2024-12-14 数据库管理-第271期 Oracle 23ai:用MongoDB的方式来操作JSON二元性(20241214)1 初始化数据1.1 创建用户1.2 导入数据1.3 创建JSON关系二元性视图 2 创建ORDS服务2.1 下载JDK172.2 安装ORDS2.3 启用MongoDB API2.4…

计网_虚拟局域网VLAN

2024.12.08:计算机网络虚拟局域网VLAN学习笔记 虚拟局域网VLAN VLAN背景(认真看)VLAN定义(最大的好处是隔离广播域)VLAN以太网帧格式的扩展划分虚拟局域网VLAN的方式虚拟局域网的优点 VLAN背景(认真看&…

使用ENSP实现NAT(2)

一、NAT的类型 二、静态NAT 1.项目拓扑 2.项目实现 路由器AR1配置: 进入系统视图 sys将路由器命名为AR1 sysname AR1关闭信息中心 undo info-center enable 进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为192.168.10.254/24 ip address 192.168.10.254 24进…

Oracle PDB的开启和关闭

[生产环境关闭与开启Oracle PDB] 【运维场景】 在运维Oracle PDB的时候经常要开启和关闭PDB,对关闭和开启PDB的操作要非常熟悉。 【操作方法】 1. PDB的打开与关闭 关闭和开启DB的时候要看DB的警告日志,日志位置(在Oracle用户下查看&…

【树莓派4B】MindSpore lite 部署demo

一个demo,mindspore lite 部署在树莓派4B ubuntu22.04中,为后续操作开个门! 环境 开发环境:wsl-ubuntu22.04分发版部署环境:树莓派4B,操作系统为ubuntu22.04mindspore lite版本:mindspore-li…

第17天:信息收集-Web应用备案产权Whois反查域名枚举DNS记录证书特征相似查询

#知识点 1、信息收集-Web应用-机构产权&域名相关性 2、信息收集-Web应用-DNS&证书&枚举子域名 标签 名称 地址 企业信息 天眼查 天眼查-商业查询平台_企业信息查询_公司查询_工商查询_企业信用信息系统 企业信息 小蓝本 获客营销系统_ai智能拓客系统_企业获…

在循环群模运算中计算逆元

文章目录 一、算数模复合二、群 循环群1. 群 (Group)2. 环 (Ring)3. 循环群 (Cyclic Group)4. 多项式环 (Polynomial Ring)5. 有限域 (Finite Field)6. 椭圆曲线 (Elliptic Curve) 三、求逆元1. 扩展欧几里得算法1.1 算法概述1.2 步骤1.3 示例 2. 费马小定理 一、算数模复合 假…

Python使用Selenium库获取 网页节点元素、名称、内容的方法

我们要用到一些网页源码信息,例如获取一些节点的class内容, 除了使用Beautifulsoup来解析,还可以直接用Selenium库打印节点(元素)名称,用来获取元素的文本内容或者标签名。 例如获取下面的class的内容&am…

M3DM的autodl环境构建过程笔记

文章目录 在3D-ADS环境https://blog.csdn.net/tfxzgp/article/details/144259472基础上构建M3DM(失败的记录,不用看)更换镜像重来(成功)安装缺少的包修改models.py中的RGB和点云backbone的路径修改main.py路径参数运行 在3D-ADS环境https://b…

Android 使用Overlay现实主题切换

最近项目上,想做一个主题切换的功能,整理了一下发布出来,主要使用的是IOverlayManager,大体思路如下: 1、想切换的应用,各自做overlay apk(简称皮肤包) 2、将overlay apk push 到v…

【原生js案例】如何实现一个穿透字体颜色的导航

普通的导航大家都会做,像这种穿透字体的导航应该很少见吧。高亮不是通过单独设置一个active类来设置字体高亮颜色,鼠标滑过导航项,字体可以部分是黑色,不分是白色,这种效果的实现 感兴趣的可以关注下我的系列课程【we…

IDEA 2023.3.6 下载、安装、激活与使用

一、IDEA2023.3.6下载 国际官网:https://www.jetbrains.com/ 国内官网:https://www.jetbrains.com.cn/ 如果国际官网无法访问,就使用国内官网,我们以国内官网为例下载IDEA2023.3.6 首先进入首页如下图&#xf…

ip_done

文章目录 路由结论 IP分片 数据链路层重谈Mac地址MAC帧报头局域网的通信原理MSS,以及MAC帧对上层的影响ARP协议 1.公司是不是这样呢? 类似的要给运营商交钱,构建公司的子网,具有公司级别的入口路由器 2.为什么要这样呢?? IP地…

深度学习作业 - 作业十一 - LSTM

问题一 推导LSTM网络中参数的梯度,并的分析其避免梯度消失的效果 LSTM网络是为了解简单RNN中存在的长程依赖问题而提出的一种新型网络结构,其主要思想是通过引入门控机制来控制数据的流通,门控机制包括输入门、遗忘门与输出门,同…

医院与医疗设备供应商网络安全事故综述

医院与医疗设备供应商网络安全事故综述 在医疗行业中,医院和医疗设备供应商的网络安全问题同样不容忽视。以下是一些近年来发生的重大网络安全事故的总结: 1. 德国杜塞尔多夫大学医院勒索软件攻击(2020年) 事件描述&#xff1a…

修改vscode中emmet中jsx和tsx语法中className的扩展符号从单引号到双引号 - HTML代码补全 - 单引号双引号

效果图 实现步骤 文件 > 首选项 > 设置搜索“”在settings.json中修改,增加 "emmet.syntaxProfiles": {"html": {"attr_quotes": "single"},"jsx": {"attr_quotes": "double","…

从0到1实现vue3+vite++elementuiPlus+ts的后台管理系统(一)

前言:从这篇文章开始实现vue3vite的后台管理系统,记录下自己搭建后台系统图的过程。 这篇文章完成项目的初始化和基本配置,这一步可以直接跟着vue3官网进行。整个系列只有前端部分,不涉及后端。 vue3官网:https://cn.…

JavaEE初阶——多线程(线程安全-锁)

复习上节内容(部分-掌握程度不够的) 加锁,解决线程安全问题。 synchronized关键字,对锁对象进行加锁。 锁对象,可以是随便一个Object对象(或者其子类的对象),需要关注的是&#xff…