【实战案例】火语言 RPA 采集澎湃新闻(滚动加载),保存到 Excel 全流程(附完整脚本)

39 阅读5分钟

在数据采集场景中,会遇到网页滚动加载的动态内容的情况,下面使用火语言 RPA ,完整演示如何采集澎湃新闻滚动加载的新闻数据并保存至 Excel的场景。

一、脚本的功能描述

该火语言 RPA 脚本主要实现对澎湃新闻特定频道(www.thepaper.cn/channel_259…
的新闻数据采集。通过模拟鼠标滚动加载更多新闻内容,获取新闻标题、内容板块、发布时间等关键信息,并将这些信息整理后写入 Excel 文档,实现从网页数据抓取到本地结构化存储的全流程自动化。

aced414e-804c-42dc-ade2-28ee087d6251.png

二、整体逻辑

具体逻辑说明:先通过变量初始化做好数据统计准备,再启动浏览器访问目标页面;通过循环模拟滚动加载,以 “滚动前后新闻数量是否变化” 为核心判断依据,确保加载到足够多的动态内容;加载完成后集中采集关键信息,最终结构化写入 Excel,实现全流程自动化。

1、初始化与准备

对存储滚动前后新闻数量的变量进行初始化,打开浏览器并访问目标澎湃新闻频道页面。

2、滚动加载判断循环

通过 While 循环控制滚动次数(为了避免无限制循环,这里设置滚动最多 20 次),在每次循环中先获取滚动前的新闻数量,然后模拟鼠标滚动至页面底部并等待加载,再获取滚动后的新闻数量。通过判断滚动前后新闻数量是否变化,确定是否继续滚动加载。

3、数据采集与存储

当滚动加载完成后,分别采集新闻标题、内容板块、发布时间等信息,最后将这些信息写入 Excel 中。

三、详细操作步骤

1、变量初始化

组件1、变量赋值
对 “滚动前新闻数量”“滚动后新闻数量”“滚动次数” 变量进行初始化赋值,其中 “滚动前新闻数量” 和 “滚动后新闻数量” 初始值设为 0,“滚动次数” 初始值设为 0。

408e4e9b-1615-4408-b039-14a2cf7469e1.png

2、打开浏览器并浏览网页

组件2、打开浏览器,选择浏览器类型,这里选择的是内置浏览器

4b926344-a77d-4b47-a8b8-18edd224378e.png 组件3、浏览网页,输入网址URL

e1bb4866-169b-487d-9723-112a811b8704.png

3、进去滚动加载判断循环(While循环)

组件4、While循环,为了防止无限制循环,这里设置循环条件为 “滚动次数 <= 20”

0427c1c4-331d-4b43-8697-b1a4d0f444f5.png 进入循环后执行以下操作:
组件5、获取多元素信息/属性值:
调用 “获取多元素信息 / 属性值” 组件,定位目标元素 h2,获取其 textContent 值集合,输出变量 滚动前新闻列表

fca68a28-58fa-4007-a090-4c8275de40c0.png 组件6、变量赋值,获取滚动前的新闻数量,滚动前新闻数量=# 滚动前新闻列表.Count

ba6eadaa-94ef-42c9-8988-66e0269ed185.png 组件7、鼠标滚动,滚动鼠标,加载后面的新闻

4cbd78a3-1f88-47af-ba74-a50618afbf45.png

在实际调试中发现,首次执行鼠标滚动操作时,页面会持续处于加载状态,需执行一次向上滚动操作后,页面加载才能恢复正常。

28880979-c500-4d7c-a7ed-22712903622b.png

那么我们就通过“变量赋值+条件判断”来实现这一逻辑:首先初始化一个 “是否已执行顶部滚动” 的标记变量,初始值设为 “未执行”;在循环过程中加入条件判断,仅当该标记为 “未执行” 时,执行 “滚动到顶部” 的操作;操作完成后,立即将标记变量更新为 “已执行”,确保后续循环不再重复触发该操作。

组件8:变量赋值,创建一个鼠标滚动到顶部布尔值,初始值:false,用于标记 “是否已执行过滚动到顶部的操作”。

ddc1e6ab-2243-4ec5-891b-cc2df283f3df.png

8f378e98-f131-435c-a207-c899e9593ed4.png 组件9:条件判断,如果鼠标滚动到顶部===false,则执行下面流程

7e584c23-9fa0-4f31-bee3-a30d14b24369.png 组件10:鼠标滚动,如果鼠标滚动到顶部===false则滚动鼠标到顶部

08ee62d2-2576-4364-803f-d188424f5c4b.png 组件11:变量赋值,执行鼠标滚动到顶部后,将变量鼠标滚动到顶部标记为ture,后续循环中将不再操作该步骤。

3fddd944-631c-4d31-8cd1-2b6eb3dea0e9.png

组件12、睡眠等待,等待新闻加载,这里设置等待5

e19210b6-e981-4fc8-82a1-179c19cf9225.png 组件13、获取多元素信息/属性值
调用 “获取多元素信息 / 属性值” 组件,定位目标元素 h2,获取其 textContent 值集合,输出变量 滚动后新闻列表

f0bfcaeb-38c3-4d9f-a496-5f03dcab1c24.png 组件14、变量赋值,获取滚动后的新闻数量,滚动后新闻数量=# 滚动后新闻列表.Count

1f135e50-ce1b-4b23-9b55-2f46d79ac7c3.png 组件15、条件判断
组件16、循环终止
滚动前的新闻数量与滚动后的新闻数量进行,对比,如果滚动前的新闻数量=滚动后的新闻数量,则循环终止

6749760b-a5e8-4af3-93bf-aad9991c7f9b.png 组件17、变量赋值否则滚动继续,每滚动一次,次数+1

4941144c-0ecd-4c69-89b5-8604667e09d4.png

4. 采集新闻详细信息

循环结束后,分别调用 “获取多元素信息 / 属性值” 组件,采集新闻数据:

组件18、获取多元素信息/属性值,定位目标元素 h2,获取新闻标题的 textContent 值集合,输出变量到新闻标题

88f539c3-a912-4feb-a65c-6b0c2ed1002a.png 组件19、获取多元素信息/属性值
定位目标元素 span.small_first____NUY > a,获取发布时间的 textContent 值集合,输出变量到内容板块

ed64066b-0c9c-4f59-9648-31ea32b2fa81.png 组件20、获取多元素信息/属性值
定位目标元素 div.small_text__dR01h > div > p:nth-child(1) > span:nth-child(2),获取发布时间的 textContent 值集合,输出变量到发布时间

9934fbb8-5b97-45ef-80ef-c72a6a57ff00.png

5、数据写入Excel

组件21、Excel打开文档,创建空的Excel用于写入数据

467f4c09-78b0-45f3-93ad-f3dc51dff403.png 组件22、Excel写入表头

d5c597a1-e70a-4616-87c4-66ffd4ba8165.png 组件23-25、Excel写入内容,写入变量新闻标题内容板块发布时间

d71e0ac1-7375-4dc8-8c3b-9347279c530e.png

5d6bfbd6-3d84-4845-a0ba-7f9cd6d19f86.png

d790aff5-335c-4d21-b167-1c6ea6043889.png 组件26、Excel关闭保存文档
组件27、关闭浏览器

d082322f-e580-4723-9ab8-d36776336961.png

完整案例分享:
www.huoyuyan.com/share.html?… 提取码: 3MH2