在之前的一篇文章中,我们使用RPA自动登录了艺赛旗社区,接下来要介绍的就是使用RPA,不写代码爬取文章信息。
一、提出问题
在登录的状态下,获取当前账号所发文章的标题、评论数以及浏览数,在不写代码的情况下实现。
二、问题分析
程序猿的解决思路是编写爬虫程序,依次爬取:
- 查找规律设置当前账号帖子页的URL
- 在帖子页依次获取每篇文章的URL
- 爬取每篇文章的标题、评论数以及浏览数
如若使用RPA,不写代码也是能够实现的,我们先分析普通用户在界面的操作流程:
- 点击账号头像进入个人主页的帖子页
- 点击每篇文章链接,进入该文章页面获取文章的标题、评论数以及浏览数
- 点击页码进入下一个帖子页,再获取每篇文章的信息
根据这个流程,我们便可以通过RPA进行模拟,在不编写代码的情况下爬取文章信息。
三、解决问题
Step 1、进入帖子页
鼠标点击当前账号头像进入个人主页的帖子页
Step 2、获取文章的信息
因为每个帖子页最多的文章数量为30篇,所以直接设置循环30次,从第一篇文章开始,每次循环点击一篇文章的链接,进入该文章的页面获取文章的标题、评论数以及浏览数,保存至一个变量中,然后再后退到帖子页,进入下一次循环。
如果循环次数之内未点击到文章链接,说明以获取所有文章,这个时候会抛出异常,而这里使用了【Try异常】组件,故会直接跳转至“异常”执行【Break中断】,跳出循环。
Step 3、进入下一个帖子页
因为随着帖子的持续发布,帖子页的页数是会持续增加的,为改变流程的通用性,就不能设置具体的循环次数,故此处使用【While循环】设置不限次数的循环(当然也可以设置一个较大的循环次数,毕竟实际上帖子页的页数还是有限的)。
进入【While循环】是处理当前页面,首先进入【For循环】处理文章信息,处理之后进入下一个帖子页,不过在进入下一个帖子页时,需要先判断是否存在下一个帖子页,这里是使用【获取文本】组件获取下一个帖子页的页码,获取成功,自然便表示有该帖子页,直接点击该帖子页链接;如若没有,说明已经获取完了所有文章的信息,这个时候中断循环,再返回获取的数据便可。
运行结果:
四、要点
在【While循环】和【For循环】中,都有一点很重要,那就是不同次情况下运行相同的组件却要执行不同的行为。
就以【For循环】中,每次循环需要点击不同的文章链接来讲,首先我们要清楚【鼠标点击】组件是怎么自动找到对应的元素控件的。
选择该【鼠标点击】组件,查看该组件的属性描述窗口“查找路径”参数,该参数便是元素在网页中的位置。
而相同类型元素的路径在网页中的位置是有规律可寻的,通过我们的RPA,不熟悉HTML的一般用户也是可以轻松找到规律所在的。
以下是通过拾取文章链接获取到的“查找路径”,从第一到第三以及第三十篇,我们可以发现就一个数字的变化,而每次循环变量 i 是从0到29依次变化,所以我们便可以代入i完成每次的循环处理:
这样便解决了位置查找的问题,同理,【While循环】中也是这么解决。