当前位置: 首页 > news >正文

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

在前一篇文章《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].hrefcontent = hot_content[index].textlog('info', f'content: {content}')print(f"热榜第{index}标题:{content}")detail = hot_detail[index].textprint(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 = 1for 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 += 1except Exception as e:print(f"处理 {key} 时发生错误: {e}")

三、数据抓取RPA与AI结合

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

四、总结

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

1. 优势

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

2. 挑战

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 跨界融合,GIS如何赋能游戏商业——以《黑神话:悟空》为例
  • 2024最新版,人大赵鑫老师《大语言模型》新书pdf分享
  • FPGA与Matlab图像处理之伽马校正
  • RusTitW:大规模语言视觉文本识别数据集(猫脸码客 第190期)
  • CAD图纸加密软件哪个好?10款2024主流CAD图纸加密软件分享!
  • 监控易监测对象及指标之:全面监控FTP服务器
  • ubuntu服务器版NVIDIA驱动失效解决方案
  • 宝塔Linux部署 Vue + Spring Boot + MySQL + Redis
  • C++中一般指针,指针数组,数组指针
  • Java入门,初识Java
  • web基础—dvwa靶场(五)File Upload
  • 【CMake】使用CMake在VIsual Studio内构建多文件夹工程
  • JavaScript 事件处理
  • Redis——常用数据类型string
  • python 使用seleniumwire获取响应数据以及请求参数
  • 【Leetcode】101. 对称二叉树
  • ES10 特性的完整指南
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • IP路由与转发
  • JavaWeb(学习笔记二)
  • Joomla 2.x, 3.x useful code cheatsheet
  • js中的正则表达式入门
  • k8s如何管理Pod
  • Laravel Mix运行时关于es2015报错解决方案
  • mockjs让前端开发独立于后端
  • Node 版本管理
  • overflow: hidden IE7无效
  • SpingCloudBus整合RabbitMQ
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • SQLServer插入数据
  • 初识 beanstalkd
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 规范化安全开发 KOA 手脚架
  • 使用agvtool更改app version/build
  • 算法之不定期更新(一)(2018-04-12)
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 【干货分享】dos命令大全
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​数据结构之初始二叉树(3)
  • #100天计划# 2013年9月29日
  • (55)MOS管专题--->(10)MOS管的封装
  • (void) (_x == _y)的作用
  • (剑指Offer)面试题34:丑数
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (一) springboot详细介绍
  • (译) 函数式 JS #1:简介
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)visual stdio 书签功能介绍
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (自适应手机端)行业协会机构网站模板