用 RPA 做一个简单的爬虫

之前写爬虫一直都是用的 Scrapy,强大而高效,直到后来接触了 RPA,呃,还是蛮适合新手的。

1、获取文章标题和链接

获取文章标题直接用“获取文本”就可以了。
但获取链接,就需要使用“获取控件 html”这个组件,然后使用正则表达式了。

import re

message = '<a class="ft-a-title" href="https://support.i-search.com.cn/article/1587024373494" rel="bookmark" data-type="0" data-id="1587024373494">艺赛旗RPA控制台与机器人的建议
        </a>'

res_url = r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')"
url = re.search(res_url ,message).group()

当然,文章的标题也可以这样获取到,但是可以少些代码,干嘛去多写行代码呢。

获取标题 title 和链接 url 就这样了,最后添加到一个空列表内进行保存:
用 RPA 做一个简单的爬虫

2、获取当前页面所有文章的标题和链接

不同文章在页面中的位置不一样,看似很难,但其实简单得很,只要修改下“查找路径”这个参数就好了。
第一篇文章到最后一篇文章的 selector:
用 RPA 做一个简单的爬虫

因此可以设置查找路径为:
'body > DIV:nth-of-type(2) > DIV:nth-of-type(1) > DIV:nth-of-type(1) > DIV:nth-of-type(1) > DIV:nth-of-type(2) > UL:nth-of-type(1) > LI:nth-of-type(%d) > H2:nth-of-type(1) > A:nth-of-type(1)'%n

n便是每次循环自增的变量啦。

不过若是当前页面没有 30 篇文章,那就会让“获取文本”返回的 title 为空,这个时候就没有再执行下去的必要了。
所以添加个“if 分支”作判断:
用 RPA 做一个简单的爬虫

3、获取下一个页面的的所有文章的标题和链接

循环结束的时候,“鼠标点击”下一个页码进入下一个页面就是了。
另外,获取文章为空了,肯定是最后一页,这种情况下就不需要进行点击下一页了,退出循环即可。
用 RPA 做一个简单的爬虫

同样通过修改“查找路径”参数设置循环,其中流程变量 m 默认初始值为 2:
'A[textNode=%d]'%m
用 RPA 做一个简单的爬虫

不过这里有一点很重要,点击下一页后,页面的网址是会变化的!
所以“鼠标点击”里的那个“网址”参数需要修改,否则就会找不到网页元素而抛出异常。
不过这也容易解决,只要将变化的部分用*代替就可以
用 RPA 做一个简单的爬虫

所以上个步骤中有关拾取组件的“网址”参数也需要修改的。

END

完结。
用 RPA 做一个简单的爬虫