AI+RPA 实战揭秘:DrissionPage 助力 CSDN 热榜数据抓取与 AI 结合

news2024/9/21 23:15:01

在前一篇文章《AI+RPA:开启智能自动化新时代》
发布之后,今天我们将以实战的方式深入介绍数据分析中的RPA究竟是怎样抓取数据的,以及它与 AI 又是如何紧密结合的。首先,让我们来认识一个重要的工具包 ——DrissionPage

一、DrissionPage简介

DrissionPage 是一个功能强大的 Python 库,它为 RPA 中的数据抓取任务提供了诸多便利。这个工具包旨在简化网页操作和数据提取的过程,无论是处理静态网页还是动态网页,它都能游刃有余。它集成了多种功能,如网页元素定位、数据解析以及模拟用户操作等,这些功能都是实现高效数据抓取的关键要素。

二、使用DrissionPage进行数据抓取

1. 环境搭建

在开始使用 DrissionPage 之前,我们需要确保 Python 环境已经正确安装。通过简单的pip install DrissionPage命令,即可将这个工具包安装到我们的项目环境中(建议使用anaconda)。

2. 以csdn为例进行热榜数据抓取

首先,初始化谷歌浏览器客户端并打开csdn。

	port = 6666
    # 以下参数均可自定义,本次只设定了端口号
    # :param browser_path: 浏览器可执行文件路径
    # :param local_port: 本地端口号
    # :param address: 调试浏览器地址,例:127.0.0.1:9222
    # :param download_path: 下载文件路径
    # :param user_data_path: 用户数据路径
    # :param cache_path: 缓存路径
    option = ChromiumOptions().set_paths(
        local_port=port
    ).set_argument('--start-maximized')
    page = ChromiumPage(addr_or_opts=option, timeout=10)
    # 和人打卡网页的动作一样
    page.get('https://www.csdn.net/')

接下来,判定csdn登录状态。

根据我的主页标签来判定csdn是否已登录

	login_ele = client.ele('@class:toolbar-container-right')
    time.sleep(2)

    if not login_ele:
      log('error', 'csdn未登录')
      raise Exception('csdn未登录')

先手动登录csdn(后面单独出博客实现自动登录)。
然后,寻找“热榜”标签。
在这里插入图片描述

	hot_ele =page.ele(f'@text():{热榜 }')
    hot_ele.click()
    time.sleep(1)

找到热榜标签之后,抓取top10的文章,包括标题,url, 浏览,评论,收藏

	hot_content = client.eles('@class:hosetitem-title')
    hot_detail = client.eles('@class:hosetitem-dec')
    hot_data = {}
    # 下载热榜前10的内容
    for index, row in enumerate(range(1, 11)):
        try:
            # url = hot_content[index].href
            content = hot_content[index].text
            log('info', f'content: {content}')
            print(f"热榜第{index}标题:{content}")
            detail = hot_detail[index].text
            print(f"内容{key} 时发生错误: {e}")
            hot_data.setdefault(content, detail)
        except Exception as e:
        	print(f"下载热榜前10的内容时发生错误: {e}")

最后就是处理抓取的数据了,这里先写入本地,以csv格式存储。

file_suffix = datetime.today().strftime("%Y-%m-%d")
    file_name = f'热榜-{file_suffix}.csv'

    if not Path(file_name).exists():
        # 创建文件并写入表头
        with open(file_name, 'w', newline='', encoding='utf-8') as f:
            writer = csv.writer(f)
            writer.writerow(['排名', '标题', '浏览', '评论', '收藏'])

    index = 1
    for key, value in content.items():
        try:
            matches = re.findall(r'\d+', value)
            browse_count = int(matches[0])
            comment_count = int(matches[1])
            favorite_count = int(matches[2])

            row_data = [index, key, browse_count, comment_count, favorite_count]

            with open(file_name, 'w', newline='', encoding='utf-8') as f:
                writer = csv.writer(f)
                writer.writerow(row_data)
            index += 1
        except Exception as e:
            print(f"处理 {key} 时发生错误: {e}")

三、数据抓取RPA与AI结合

第二节提到了以csv的格式存储RPA抓取的数据。在这里我们可以把数据处理环节提取成一个公共的方法。然后把热榜数据通过API的方式投喂给大模型,如文心一言、通义千问,豆包,需要大模型做什么,直接包含在payload中,大模型处理的结果回传回来或者单独落库,用于后续的业务逻辑。(本文仅阐述思路,后续会发布博客详细讲解具体的交互过程)

四、总结

RPA(机器人流程自动化)与 AI(人工智能)的结合在实际应用中展现出了显著的优势,同时也面临着一些挑战。

1. 优势

  • 深度挖掘数据价值
    单独的 RPA 只能进行数据的收集,而结合 AI 后,可以对数据进行深度挖掘。例如在短视频领域,不仅可以抓取点赞、评论数量,还能通过 AI 分析用户的情感倾向,从而为创作者提供更有针对性的创作建议。
  • 提高效率
    通过 RPA 自动抓取数据,大大减少了人工收集数据的时间和工作量。
  • 提升准确性
    机器抓取数据避免了人工操作可能出现的错误,如数据录入错误等。同时,AI 模型对数据的分析能够更精准地发现数据中的规律和趋势,为企业提供更可靠的决策依据。

2. 挑战

  • 数据质量和隐私问题
    从网页上抓取的数据可能存在质量不稳定的情况,如部分数据缺失或者数据来源不可靠。同时,在数据抓取过程中必须严格遵守法律法规,保护用户的隐私信息
  • 模型的适应性和复杂度
    大模型需要不断适应不同的业务场景和数据变化。如果业务场景过于复杂,可能需要构建更复杂的模型,增加了模型训练和优化的难度。

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

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

相关文章

【例题】lanqiao301 实现基数排序

输入输出样例 输入 6 7 1 4 8 5 2输出 1 2 4 5 7 8解题思路 翻译:就是从个位到十位、……比较大小。 代码 nint(input()) alist(map(int,input().split())) a.sort() print( .join(map(str,a)))

Linux: network: delay and burst

最近遇到一个false-network的问题,抓到的网络包的特征是,有十几秒的延迟,然后来了一个burst。这个现象说明这个包肯定是缓存在了一个地方,但是具体是什么地方,就需要抓包确定。 这次的缓存的地方是虚拟机内部。由于一…

【刷题】Day5--数字在升序数组中出现的次数

Hi! 今日份刷题~ 数字在升序数组中出现的次数_牛客题霸_牛客网 我感觉题目简单,我的解答也很简单,二分法遗忘,有时间复习一下尝试新的解法。 /*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的…

轻松上手Cursor,体验丝滑编程

最近Cursor大火。 作为一名程序员,理应接触接触,了解了解。 好吧!这一了解,我直接用Cursor替换了用了好几年的vscode了。 下面我把体验Cursor的过程总结了一下。你看看。 Cursor是啥 Cursor是一款革命性的AI驱动代码编辑器&a…

rocky Linux 9.4系统配置zabbix监控MySQL主从复制状态与配置钉钉告警

MySQL主从复制原理: 1. 主从复制的基本概念 主服务器(Master):负责处理所有的写操作(INSERT、UPDATE、DELETE),并将这些操作记录到二进制日志(binary log)中。 从服务器…

深度揭秘:日志打印的艺术与实战技巧,让你的代码会说话!

🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 目录 🍁日志🍂日志分模块实现讲解🍃日志等级的实现🥥日志时间*时间的获取* 🌈文…

Nginx搭建直播服务器,并用rtmp,http-flv,hls三种模式拉流观看直播的流程

一、首先搭建直播服务器 环境widows,并且已经集成了 :nginx-http-flv-module模块 nginx.conf配置如下: worker_processes 1;#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #error…

Vue3中集成高德地图并实现平移缩放功能

大家好,随着前端技术的不断发展,地图应用在我们的项目中越来越常见。本文将介绍如何在Vue3项目中集成高德地图,并通过简单的配置实现地图的平移和缩放功能。 实现步骤 1、申请高德地图密钥(Key)(已有key可…

Git使用详解:从安装到精通

前言 什么是Git Git是一个分布式版本控制工具,主要用于管理开发过程中的源代码文件(Java类、xml文件、html页面等),在软件开发过程中被广泛使用。 可以理解: git是一个管理源代码的工具,主要用于企业团队开…

openwrt wsdd模块介绍

wsdd简介 wsdd是一个实现Web服务发现主机守护进程的工具。这使得(如Samba)主机,像你的本地网络存储设备,能够被Windows这样的Web服务发现客户端找到。 目的 由于Windows不再支持NetBIOS发现,wsdd使用Web服务发现方法使…

密码学---easy_hash

题目出处:首页 - Bugku CTF ✨打开题目有两个文件 ✨打开flag.py后开始分析所给的代码 import hashlib # 导入 hashlib 模块,用于计算哈希值 from multiprocessing import Pool # 从 multiprocessing 模块导入 Pool 类,用于多进程处理d…

istio中如何使用serviceentry引入外部服务

假设需要引入一个外部服务,外部服务ip为10.10.102.90,端口为32033. 引入到istio中后,我想通过域名gindemo.test.ch:9090来访问这个服务。 serviceentry yaml内容如下: apiVersion: networking.istio.io/v1beta1 kind: ServiceEn…

Python 课程5-NumPy库

在数据处理和科学计算中,NumPy 是一个非常强大且基础的库。除了基本的创建数组功能之外,NumPy 提供了许多强大的函数和方法,用于执行高级的矩阵运算、统计分析、逻辑操作等。以下是一些常用且非常有用的 NumPy 指令,涵盖了创建数组…

STM32 BootLoader 刷新项目 (六) 获取帮助-命令0x52

STM32 BootLoader 刷新项目 (六) 获取帮助-命令0x52 在嵌入式MCU软件开发中,通过串口进行人机交互是非常常见且重要的操作方式。获取帮助的命令通常用来向用户展示所有支持的交互指令及其使用方法。详细介绍如下: 获取帮助命令的作用 用户友好性&#…

进程之信号

文章目录 进程信号中断的概念信号是异步事件Linux信号信号发生的来源信号的处理方式signal函数示例--使用signal函数对常见的信号进行捕获、执行默认操作、忽略三种方式处理 SIGCHLD信号示例--使用SIGCHLD信号来避免子进程退出 kill函数raise函数示例--使用kill函数给指定进程发…

基于python+django+vue的学生成绩管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于协同过滤pythondjangovue…

Java之线程篇四

目录 volatile关键字 volatile保证内存可见性 代码示例 代码示例2-(volatile) volatile不保证原子性 synchronized保证内存可见性 wait()和notify() wait()方法 notify() 理解notify()和notifyAll() wait和sleep的对比 volatile关键字 volati…

【C++ Primer Plus习题】16.3

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: #include <iostream> #include <string> #include <…

Datawhale------Tiny-universe学习笔记——Qwen(1)

1. Qwen整体介绍 对于一个完全没接触过大模型的小白来说&#xff0c;猛一听这个名字首先会一懵&#xff1a;Qwen是啥。这里首先解答一下这个问题。下面是官网给出介绍&#xff1a;Qwen是阿里巴巴集团Qwen团队研发的大语言模型和大型多模态模型系列。其实随着大模型领域的发展&a…

Linux服务器上安装git lfs命令

有时候&#xff0c;需要批量下载数据集时要用到git lfs命令 首先&#xff0c;使用pip install git-lfs安装&#xff0c;会发现使用时仍然提示&#xff1a;git: lfs is not a git command. See git --help. 这就意味着安装不成功。 因此&#xff0c;需要通过如下途径手动安装&a…