揭秘AI+RPA:CSDN热榜数据抓取RPA与AI融合之道

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

一、DrissionPage简介

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

二、使用DrissionPage进行数据抓取

1. 环境搭建

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

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

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

python 复制代码
	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')
    client = ChromiumPage(addr_or_opts=option, timeout=10)
    # 和人打卡网页的动作一样
    client.get('https://www.csdn.net/')

接下来,判定csdn登录状态。 根据我的主页标签来判定csdn是否已登录

python 复制代码
	login_ele = client.ele('@class:toolbar-btn-loginfun')
    time.sleep(2)

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

先手动登录csdn(后面单独出博客实现自动登录 )。 然后,寻找"热榜 "标签。

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

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

python 复制代码
	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格式存储。

python 复制代码
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. 挑战

  • 数据质量和隐私问题 从网页上抓取的数据可能存在质量不稳定的情况,如部分数据缺失或者数据来源不可靠。同时,在数据抓取过程中必须严格遵守法律法规,保护用户的隐私信息
  • 模型的适应性和复杂度 大模型需要不断适应不同的业务场景和数据变化。如果业务场景过于复杂,可能需要构建更复杂的模型,增加了模型训练和优化的难度。
相关推荐
陈随易3 分钟前
兔小巢收费引发的论坛调研Node和Deno有感
前端·后端·程序员
聪明的墨菲特i8 分钟前
Django前后端分离基本流程
后端·python·django·web3
hlsd#1 小时前
go mod 依赖管理
开发语言·后端·golang
陈大爷(有低保)1 小时前
三层架构和MVC以及它们的融合
后端·mvc
亦世凡华、1 小时前
【启程Golang之旅】从零开始构建可扩展的微服务架构
开发语言·经验分享·后端·golang
河西石头1 小时前
一步一步从asp.net core mvc中访问asp.net core WebApi
后端·asp.net·mvc·.net core访问api·httpclient的使用
2401_857439691 小时前
SpringBoot框架在资产管理中的应用
java·spring boot·后端
怀旧6661 小时前
spring boot 项目配置https服务
java·spring boot·后端·学习·个人开发·1024程序员节
阿华的代码王国2 小时前
【SpringMVC】——Cookie和Session机制
java·后端·spring·cookie·session·会话
小码编匠2 小时前
领域驱动设计(DDD)要点及C#示例
后端·c#·领域驱动设计