百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Crawl4AI: 适合大语言模型的开源网页爬取与信息提取利器

off999 2024-12-15 16:05 49 浏览 0 评论

Crawl4AI

Crawl4AI是一款专为简化网页爬取和信息提取而设计的工具,特别适合大语言模型(LLMs)和AI应用。

无论你是通过REST API、Python 库,还是Google Colab笔记本来使用,Crawl4AI都能提供强大的功能,让网页数据提取变得更加简单和高效。你无需安装任何额外的库,就能轻松地从多个网页获取所需的信息。

Crawl4AI提供了多种使用方式:你可以直接使用官方服务器上的 REST API,也可以在本地运行服务器。

此外,Crawl4AI的Python库允许你根据具体需求自定义爬取和提取策略,提供更高级的控制。

通过Crawl4AI,你可以高效地提取网页上的文本、图片、音频、视频和链接,为你的LLMs和AI应用提供强大的数据支持。

主要功能

功能描述完全免费和开源Crawl4AI 是免费使用且开源的,任何人都可以访问。适用于 LLM 的输出格式支持 JSON、清理后的 HTML 和 markdown 格式。并发爬取可以同时爬取多个 URL,节省时间。媒体提取提取所有媒体标签,包括图片、音频和视频。链接提取从网页中提取所有外部和内部链接。元数据提取提取网页的元数据以获取更多上下文信息。自定义钩子定义自定义钩子,用于身份验证、头部信息和爬取前的页面修改。用户代理支持自定义 HTTP 请求的用户代理。截图功能在爬取过程中对网页进行截图。JavaScript 执行在爬取前执行自定义 JavaScript。高级分块和提取策略使用基于主题、正则表达式、句子分块、余弦聚类和 LLM 的提取策略。支持 CSS 选择器使用 CSS 选择器提取特定内容。指令/关键词优化传递指令或关键词以优化提取过程。

安装

使用 Crawl4AI 有三种方式:

1、作为库使用(推荐)

pip install "crawl4ai[all] @ git+https://github.com/unclecode/crawl4ai.git"

2、作为本地服务器(Docker)或使用 REST API

这个选项安装与transformer相关的依赖项并下载模型。

# 对于 Mac 用户 (M1/M2)
docker build --platform linux/amd64 --build-arg INSTALL_OPTION=transformer -t crawl4ai:transformer .

# 对于其他用户
docker build --build-arg INSTALL_OPTION=transformer -t crawl4ai:transformer .

# 运行容器
docker run -d -p 8000:80 crawl4ai:transformer

3、作为本地服务器(Docker),使用 Docker Hub 上的预构建镜像

你可以使用Docker Hub上的预构建Crawl4AI镜像,这些镜像适用于所有平台(Mac,Linux,Windows)

# 拉取镜像
docker pull unclecode/crawl4ai:latest

# 运行容器
docker run -d -p 8000:80 unclecode/crawl4ai:latest

运行容器后,你可以测试是否正常工作:

在Windows (PowerShell)上:

Invoke-WebRequest -Uri http://localhost:8000

或者打开浏览器,导航到http://localhost:8000

快速入门指南

首先,我们创建一个WebCrawler实例并调用warmup()函数。

第一次运行Crawl4AI时可能需要几秒钟,因为它需要加载所需的模型文件。

from crawl4ai import WebCrawler

def create_crawler():
    crawler = WebCrawler(verbose=True)
    crawler.warmup()
    return crawler

crawler = create_crawler()

基本用法

只需提供一个URL!

result = crawler.run(url="https://www.nbcnews.com/business")
print(f"Basic crawl result: {result}")

截图

让我们对页面进行截图!

result = crawler.run(url="https://www.nbcnews.com/business", screenshot=True)
with open("screenshot.png", "wb") as f:
    f.write(base64.b64decode(result.screenshot))
print("Screenshot saved to 'screenshot.png'!")

理解参数

默认情况下,Crawl4AI会缓存爬取结果,这意味着对相同URL的后续爬取会更快!让我们看看这个功能。

第一次爬取(缓存结果):

result = crawler.run(url="https://www.nbcnews.com/business")
print(f"First crawl result: {result}")

强制重新爬取

result = crawler.run(url="https://www.nbcnews.com/business", bypass_cache=True)
print(f"Second crawl result: {result}")

添加分块策略

让我们添加一个分块策略:RegexChunking!这个策略根据给定的正则表达式模式拆分文本。

from crawl4ai.chunking_strategy import RegexChunking

result = crawler.run(
    url="https://www.nbcnews.com/business",
    chunking_strategy=RegexChunking(patterns=["\n\n"])
)
print(f"RegexChunking result: {result}")

你还可以使用NlpSentenceChunking,它利用NLP技术将文本拆分为句子。

from crawl4ai.chunking_strategy import NlpSentenceChunking

result = crawler.run(
    url="https://www.nbcnews.com/business",
    chunking_strategy=NlpSentenceChunking()
)
print(f"NlpSentenceChunking result: {result}")

添加提取策略

让我们变得更聪明,使用提取策略:CosineStrategy!这个策略利用余弦相似度提取语义上相似的文本块。

from crawl4ai.extraction_strategy importCosineStrategy

result = crawler.run(
    url="https://www.nbcnews.com/business",
    extraction_strategy=CosineStrategy(
        word_count_threshold=10,
        max_dist=0.2,
        linkage_method="ward",
        top_k=3
)
)
print(f"CosineStrategy result: {result}")

你还可以传递其他参数,如semantic_filter,以提取特定内容。

result = crawler.run(
    url="https://www.nbcnews.com/business",
    extraction_strategy=CosineStrategy(
        semantic_filter="inflation rent prices"
    )
)
print(f"CosineStrategy result with semantic filter: {result}")

使用 LLMExtractionStrategy

这个策略利用大型语言模型从网页中提取相关信息。

from crawl4ai.extraction_strategy import LLMExtractionStrategy
import os

result = crawler.run(
    url="https://www.nbcnews.com/business",
    extraction_strategy=LLMExtractionStrategy(
        provider="openai/gpt-4o", 
        api_token=os.getenv('OPENAI_API_KEY')
    )
)
print(f"LLMExtractionStrategy (no instructions) result: {result}")

你还可以提供特定的指令来指导提取。

result = crawler.run(
    url="https://www.nbcnews.com/business",
    extraction_strategy=LLMExtractionStrategy(
        provider="openai/gpt-4o",
        api_token=os.getenv('OPENAI_API_KEY'),
        instruction="I am interested in only financial news"
    )
)
print(f"LLMExtractionStrategy (with instructions) result: {result}")

目标提取

使用CSS选择器只提取H2标签!

result = crawler.run(
    url="https://www.nbcnews.com/business",
    css_selector="h2"
)
print(f"CSS Selector (H2 tags) result: {result}")

交互提取

传递JavaScript代码点击“加载更多”按钮!

const loadMoreButton = Array.from(document.querySelectorAll('button')).find(button => button.textContent.includes('Load More'));
loadMoreButton && loadMoreButton.click();
result = crawler.run(
    url="https://www.nbcnews.com/business",
    js=js_code
)
print(f"JavaScript Code (Load More button) result: {result}")

使用爬虫钩子

import time

from crawl4ai.web_crawler importWebCrawler
from crawl4ai.crawler_strategy import*

defdelay(driver):
print("Delaying for 5 seconds...")
    time.sleep(5)
print("Resuming...")

defcreate_crawler():
    crawler_strategy =LocalSeleniumCrawlerStrategy(verbose=True)
    crawler_strategy.set_hook('after_get_url', delay)
    crawler =WebCrawler(verbose=True, crawler_strategy=crawler_strategy)
    crawler.warmup()
return crawler

crawler = create_crawler()
result = crawler.run(url="https://www.nbcnews.com/business", bypass_cache=True)

入门体验

拿之前文章做个验证。Redka = SQLite 重新实现 Redis

from crawl4ai.web_crawler import WebCrawler

crawler = WebCrawler()
crawler.warmup()

result = crawler.run(
    url='https://mp.weixin.qq.com/s?__biz=Mzg2MDg5NzE5NA==&mid=2247489168&idx=1&sn=9d7cee1d5641b0ad89568d48ccdef75c&chksm=ce1e3c55f969b5439f0efbbee58ebd3654238a90b049c603f13cc98450f5893e64d222d23f89&token=1468678215&lang=zh_CN#rd',
    screenshot=true
)
print(result)                

适用于 LLM 的输出格式

导出markdown

JSON格式

截屏

相关推荐

怎么对电脑文件夹加密(怎么对电脑文件夹加密码)

1.右键点要加密的文件或文件夹,然后单击“属性”;2.在“常规”选项卡,点击“高级”。选中“加密内容以便保护数据”复选框;3.在加密文件夹时,系统将询问是否要同时加密它的子文件夹。要如果选择是,那它的...

windows系统下载手机(win10下载手机)

OPPO手机重新下载安装系统:先备份好重要数据!然后手机连接电脑把下载的固件存入手机。然后再长按电源键十秒钟进入关机状态(可拆卸电板的需取下电板然后重新安装)。再同时按住电源键跟音量减键,进入reco...

电脑系统分区怎么分(电脑系统分区怎么分区)

分区是将硬盘分割成不同的逻辑部分,每个分区可以被视为一个独立的存储设备。通过分区,可以更好地管理数据和操作系统。要进行电脑分区,可以按照以下步骤进行:1.确定分区方案:首先需要确定分区的目的和需求。...

电脑显卡怎么选择(电脑显卡怎样选择)

以下是一些通用的方法:1.在硬件层面进行配置:首先需要确认您的主板和操作系统是否支持多GPU并行,以及您的电源是否提供足够的功率支持。在BIOS中启用多GPU选项,并安装正确的驱动程序。然后,通...

设置软件下载(设置软件下载入口)

iphone13app的下载设置1、首先,打开手机桌面的【设置】。2、在设置界面,点击【面容ID与密码】。3、这时设置了键盘锁的会要求你输入键盘锁密码进入。4、进入之后,找到【iTunesStore...

电脑麦克风插孔是哪个(电脑麦克风插那)

1.蓝色的为音频输入口。一般的电脑后面都有三个音频接口:蓝色是音频输入,绿色是音频输出,粉红色麦克风。  2.音频输入(蓝色),为外接光驱.随身听及其它音频输入设备,即可以把外部的设备声音传送至电脑...

ie浏览器打不开网页怎么修复

第一步:打开“运行”输入—〉cmd—〉回车然后把下面这行字符复制到黑色cmd框里面去回车等待dll文件全部注册完成就关闭可以了(下面是要运行的代码):for%1in(%windir%\syste...

mail163邮箱登录入口网页版(mail163手机邮箱登录)

1.首先你要开启网易的POP3/SMTP/IMAP。2.设置完之后你需要网易的客户端授权密码。3.密码会发送至你的绑定手机。4.用发给你的客户端授权密码登录第三方客户端(ios客户端)5.直接登陆,储...

微信一键恢复(微信一键恢复已删好友怎么操作)
  • 微信一键恢复(微信一键恢复已删好友怎么操作)
  • 微信一键恢复(微信一键恢复已删好友怎么操作)
  • 微信一键恢复(微信一键恢复已删好友怎么操作)
  • 微信一键恢复(微信一键恢复已删好友怎么操作)
win7系统序列号怎么查(win7电脑的序列号怎么查)

你可以在cmd命令行窗口中输入以下相关命令,可以得到你要的信息查找主板厂商输入:wmicBaseBoardgetManufacturer查找主板型号输入:wmicBaseBoardgetP...

台式电脑怎么看配置好坏(台式机怎么看配置参数哪里看好坏)

如何分辨电脑配置好坏第一看CPU,CPU从上到下可分为i7,i5,i3等,数字越高越好。第二看显卡和内存,显卡内存现在至少4G或者8G起步,越高越好,第三看硬盘是否是固态,固态要比机械的运行速度快...

下载软件安装不了(为什么下载软件安装不了)

    一:检查手机内存是否充足,如果内存太小,需要更换大容量的SD卡。  二:检查手机是否设置允许安装除手机自带应用商店以外的应用。  方法一:需要从手机自带应用商店下载。  ①点击手机桌面上的应用...

现在建议更新win11吗(应该升级win11吗)

鲁大师更新11靠谱的,他只是给你提供一个方便的升级渠道而已。升级以后能否正常使用,还要看你原来的系统是否是正版。如果原来的系统是正版,升级完成后,可以正常使用。如果原来的系统是盗版,也是可以升级的,只...

windows7旗舰版好用吗(win7旗舰版好用么)

win7旗舰版挺好使的不过现在可以选择更win10。Windows7旗舰版属于微软公司开发的Windows7操作系统系统系列中的功能最高级的版本,也被叫做终结版本,是为了取代WindowsXP...

2025年最好用的手机浏览器(2021最好的手机浏览器)

可以使用uc浏览器或者是QQ浏览器,最新版本都是带有Flash插件的,火狐浏览器手机版也是一开始拥有Flash插件。以下是详细介绍:  1、uc浏览器是阿里旗下的浏览器,只需要下载最新版,然后进去就可...

取消回复欢迎 发表评论: