- 作者:老汪软件技巧
- 发表时间: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未登录')
先手动登录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. 挑战