揭秘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. 挑战

  • 数据质量和隐私问题 从网页上抓取的数据可能存在质量不稳定的情况,如部分数据缺失或者数据来源不可靠。同时,在数据抓取过程中必须严格遵守法律法规,保护用户的隐私信息
  • 模型的适应性和复杂度 大模型需要不断适应不同的业务场景和数据变化。如果业务场景过于复杂,可能需要构建更复杂的模型,增加了模型训练和优化的难度。
相关推荐
zopple5 小时前
常见的 Spring 项目目录结构
java·后端·spring
cjy0001117 小时前
springboot的 nacos 配置获取不到导致启动失败及日志不输出问题
java·spring boot·后端
小江的记录本8 小时前
【事务】Spring Framework核心——事务管理:ACID特性、隔离级别、传播行为、@Transactional底层原理、失效场景
java·数据库·分布式·后端·sql·spring·面试
sheji34168 小时前
【开题答辩全过程】以 基于springboot的校园失物招领系统为例,包含答辩的问题和答案
java·spring boot·后端
程序员cxuan8 小时前
人麻了,谁把我 ssh 干没了
人工智能·后端·程序员
wuyikeer10 小时前
Spring Framework 中文官方文档
java·后端·spring
Victor35610 小时前
MongoDB(61)如何避免大文档带来的性能问题?
后端
Victor35610 小时前
MongoDB(62)如何避免锁定问题?
后端
wuyikeer10 小时前
Spring BOOT 启动参数
java·spring boot·后端
子木HAPPY阳VIP11 小时前
Ubuntu 22.04 VMware 设置固定IP配置
人工智能·后端·目标检测·机器学习·目标跟踪