3个最流行的开源大模型网络爬虫框架

在传统网络爬虫中,主要的挑战一直是手动操作的工作量。使用像 Beautiful Soup(BS4)和 Selenium 这样的工具时,我们需要为每个新网站编写解析代码,需要适配和适应不同的 HTML 结构。这种不断的修改既耗时又容易出错。然而,当出现了大模型之后就没那么复杂了。随着具备视觉功能的大型语言模型(LLM)的出现,我们现在可以创建几乎通用的网络爬虫代理,大大简化和自动化了这一过程。

在这篇博客中,我们的主要关注点是探讨三种强大的工具:ScrapeGraph、FireCrawl 和 AgentQL。这些创新的库在革命性地改变网络爬虫领域方面发挥了关键作用,提供了先进的功能,使我们能够创建高效且多功能的爬虫代理。通过深入的讨论和实际示例,我们将详细探讨这些工具如何简化网络爬虫过程,并实现构建由 LLM 模型驱动的爬虫代理的目标。

ScrapeGraph

ScrapeGraphAI 是一个开源框架,它利用大型语言模型(LLM)和直接图逻辑的力量来简化网络爬虫过程。使用 ScrapeGraphAI,为网站、文档和 XML 文件创建爬虫管道变得轻而易举。你只需指定要提取的信息,其余的工作由库来处理。其直观的界面和先进的功能使其成为开发人员寻求高效、精确的网络爬虫解决方案时的首选。

import os
from dotenv import load_dotenv
from scrapegraphai.graphs import SmartScraperGraph
from scrapegraphai.utils import prettify_exec_info
import json

# 从.env加载环境变量
load_dotenv()

# 从环境变量加载openai key
openai_key = os.getenv("OPENAI_APIKEY")

# 配置SmartScraperGraph
graph_config = {
   
   "llm": {
   
      "api_key": openai_key,
      "model": "gpt-3.5-turbo",
   },
}

# 创建SmartScraperGraph并运行
smart_scraper_graph = SmartScraperGraph(
   prompt="列举所有的产品和他们的价格",
   # 接收一个html网页页面
   source="https://s.taobao.com/search?page=1&q=iphone",
   config=graph_config
)

# 执行爬虫并保存结果
result = smart_scraper_graph.run()
with open("results.json", 'w', encoding='utf-8') as f:
      json.dump(result, f, indent=4)

我们导入了必要的模块和库,如 os、dotenv、SmartScraperGraph 和 json。首先,我们从 .env 文件中加载环境变量,这是安全存储像 API 密钥等敏感信息的常见做法。graph_config 字典包含 SmartScraperGraph 所需的配置设置。在本例中,它包含 OpenAI API 密钥并指定使用的 GPT 模型(gpt-3.5-turbo)。接下来,我们创建 SmartScraperGraph 类的实例,向其提供提示(查询)、源(要爬取的网页 URL)和配置设置。在 smart_scraper_graph 实例上调用 run() 方法来执行爬虫并从网页中提取数据。提取的数据存储在 result 变量中。最后,使用 json.dump() 方法将提取的数据保存到名为 “results.json” 的 JSON 文件中,供进一步处理或分析。

{
   
    "products": [
        {
   
            "Name": "Apple/苹果 iPhone 13 Pro Max苹果13promax 苹果13 pro 手机",
            "Price": "¥3238.00"
        },
        {
   
            "Name": "新款Apple/苹果 iPhone 15 Pro Max 苹果5G手机15ProMax 国行正品",
            "Price": "¥7428.00"
        },
        {
   
            "Name": "Apple/苹果 iPhone 15 支持移动联通电信5G 双卡双待手机",
            "Price": "¥6999.00"
        },
        {
   
            "Name": "Apple/苹果 iPhone14ProMax双卡原装正品苹果14Promax全网通全新",
            "Price": "¥5999.00"
        },
        {
   
            "Name": "Apple/苹果 iPhone 15 Pro Max",
            "Price": "¥9999.00"
        }
    ]
}

如果你想从不同的来源爬取数据,只需在代码中更改 URL。SmartScraperGraph 的灵活性允许你在不显著修改代码的情况下,针对各种网站或网页。这意味着你可以根据具体需求调整爬虫过程,轻松从各种来源收集数据。虽然 SmartScraperGraph 在处理某些网站的弹出窗口或拦截器时可能遇到限制,但需要注意的是,SmartScraperGraph 是一个开源库,这意味着你可以根据具体要求对其进行定制。

FireCrawl

Firecrawl 作为一个强大的解决方案,配备了一系列功能,旨在克服网络爬虫工作中的固有挑战。它高效地管理代理、缓存、速率限制等复杂性,确保数据检索过程的顺畅。Firecrawl 的爬取能力扩展到网站的所有可访问子页面,无论是否存在站点地图,保证全面的数据提取。即使面对通过 JavaScript 动态渲染的内容,Firecrawl 也能非常高效的地捕获每一条有价值的信息。其输出经过 Markdown 格式化,简化了与大型语言模型(LLM)和其他应用程序的集成。

你可以注册 Firecrawl 的免费套餐,获得基本的爬虫功能。通过在这注册,你可以爬取最多 500 个页面,限制为每分钟 5 次爬取以及 1 个并发爬取任务。

下面是一个使用FireCrawl爬取

from firecrawl imp
YayCrawler是一个基于WebMagic开发的分布式通用爬虫框架,开发语言是Java。我们知道目前爬虫框架很多,有简单的,也有复杂的,有轻 量型的,也有重量型的。您也许会问:你这个爬虫框架的优势在哪里呢?额,这个是一个很重要的问题!在这个开篇中,我先简单的介绍一下我这个爬虫框架的特 点,后面的章幅会详细介绍并讲解它的实现,一图胜千言:1、分布式:YayCrawler就是一个大哥(Master)多个小弟(Worker)的架构(这种结构才是宇宙的真理),当然大哥还有一个小秘(Admin)和外界交往。2、通用性:我们很多时候需要爬取不同网站的数据,各个网站的结构和内容都有很大的差别,基本上大部分人都是遇到一个网站写一份代码,没法做到工具 的复用。YayCrawler就是想改变这种情况,把不同的部分抽象出来,用规则来指导爬虫做事。也就是说用户可以在界面上配置如何抓取某个页面的数据的 规则,等爬虫在爬取这个页面的时候就会用这个事先配置好的规则来解析数据,然后把数据持久化。3、可扩展的任务队列:任务队列由Redis实现,根据任务的状态有四种不同的任务队列:初始、执行中、成功、失败。您也可以扩展不同的任务调度算法,默认是公平调度。4、可定义持久化方式:爬取结果中,属性数据默认持久化到MongoDB,图片会被下载到文件服务器,当然您可以扩展更多的存储方式。5、稳定和容错:任何一个失败的爬虫任务都会重试和记录,只有任务真正成功了才会被移到成功队列,失败会有失败的原因描述。6、反监控组件:网站为了防止爬虫也是煞费苦心,想了一系列的监控手段来反爬虫。作为对立面,我们自然也要有反监控的手段来保障我们的爬虫任务,目前主要考虑的因素有:cookie失效(需要登陆)、刷验证码、封IP(自动换代理)。7、可以对任务设置定时刷新,比如隔一天更新某个网站的数据。作者博客地址:http://www.cnblogs.com/yuananyun 标签:爬虫
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liugddx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值