• 作者:老汪软件技巧
  • 发表时间:2024-09-28 00:03
  • 浏览量:

在前一篇文章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')
    client = ChromiumPage(addr_or_opts=option, timeout=10)
    # 和人打卡网页的动作一样
    client.get('https://www.csdn.net/')

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

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

	login_ele = client.ele('@class:toolbar-btn-loginfun')
    time.sleep(2)
    if login_ele:
      log('error', 'csdn未登录')
      raise Exception('csdn未登录')

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

先手动登录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. 优势2. 挑战