采集数据的用途非常广泛,常见的有电商的商品数据爬取,评论爬取,微信文章爬取等等。
我们本篇文章将以【智联招聘】的招聘职位数据采集为示例,帮助大家掌握 PowerAutomate Desktop 中的采集网页数据方法。
具体场景如下:
我们会打开智联招聘北京地区的搜索页:https://sou.zhaopin.com/?jl=530,然后输入关键词搜索,在搜索后得到招聘信息列表页,之后对数据进行采集。
创建流程
新建一个 Power Automate Desktop 流程,并命名为【Web 自动化 - 采集招聘数据】
启动浏览器
既然要操作网页数据,那首先就需要启动浏览器实例。这里我们还是将【启动新Microsoft Edge】操作拖动到画布中,然后将【初始URL】配置为智联招聘的搜索网址https://sou.zhaopin.com/?jl=530
并将窗口设置为最大化。
捕获 UI 元素
当进入网站后,我们通常需要对数据进行一些筛选,在筛选后才会执行采集的动作。
数据的筛选实际上就是对于网页中的文本框,按钮,下拉选项等 UI 元素的控制,这些我们都在上一章节中介绍过了,所以让我们快速完成这部分的操作。
通过右侧的UI元素组,添加 UI 元素,捕获【职位输入框】UI元素
用同样的方式依次捕获:搜索按钮,工作经验等所需的筛选 UI 元素。
然后将几个 UI 元素重命名,使其名称更加友好。
输入内容
接下来如果我们希望可以在每次流程运行的时候动态筛选指定的职位信息,那我们可以添加一个【显示输入对话框】,并按照下图进行配置。
输入职位
之后再通过【填充网页上的文本字段】指定【职位搜索框 UI 元素】,然后将要输入的文本设置为上一个操作中用户在输入框中输入的内容,也就是变量【UserInput】
点击搜索按钮
接下来再拖动【按网页上的按钮】操作,并将UI元素配置为捕获到的【搜索按钮】。
此时我们运行一下流程,首先打开了智联招聘的搜索站点,然后弹出了对话框。
当我们在里面输入完职位,点击 ok 后,可以发现搜索框中已经输入了我们设置的职位,并且点击了搜索按钮,但是招聘结果并没有发生变化。
此时我们尝试手动点击搜索按钮,发现依然没有变化,这说明是网页本身的问题。并不是Power Automate Desktop 的操作没有生效。
但细心观察后,我们可以发现实际上网站上的 URL 部分已经发生了变化,其中多了一个叫做 kw=前端开发的文字,这就表示搜索按钮的点击已经生效,网址都变了,但是结果没出现,可能是网页的 BUG 。
此时我们尝试刷新该网页,可以发现搜索结果生效了。
模拟刷新操作
所以由于招聘网站本身的功能问题,我们现在需要增加一个模拟刷新网页的操作。
这可以通过添加【转到网页】操作,然后将导航设置为【重新加载网页】。
此时我们再次运行流程,当搜索后,重新刷新了网页,因此已经成功实现了招聘数据筛选的功能。
提取网页数据
接下来终于要开始采集数据了。
在 Web 自动化中专门有一个叫做 Web 数据提取的分类,该分类下的操作都是用来采集网页数据的。
这里我们将【从网页中提取数据】操作拖动到画布下面。
此时我们打开之前的招聘网站,可以发现在浏览器中多出了一个叫做【实时 Web 帮助程序 - 从网页中提取数据】的弹出框。
这个时候我们将鼠标移动并悬停到我们希望提取的数据上时,会和之前捕获 UI 元素一样,出现一个红色的框。
这时我们点击鼠标右键,将出现几个用来提取数据的选项,我们选择【提取元素值】,可以指定要提取当前 UI 元素的哪个属性,因为我们这里希望能够采集职位名称,所以直接选择【文本】即可。
此时在【实时 Web 帮助程序 - 从网页中提取数据】的弹出框中将出现我们提取到的内容,职位名称。
接下来用同样的方式将职位的薪资,经验要求,学历要求和公司名都进行采集。
此时我们采集的都是第一个职位的信息,但是我们实际希望能够把整个网页的数据都采集到。
此时我们用将鼠标移动到第二个职位的职位名称,然后进行提取操作。
一旦执行完这个操作后,可以发现【实时 Web 帮助程序】中,自动将整个网页的数据都进行了同样方式的提取,并生成了一个表格。
接下来我们可以给表格中的列进行一下命名。
除此之外,网页中还会出现很多页的数据,除了将当前页采集外,我们还要能够采集其他页面的数据。这时我们可以找到页面中的【下一页】按钮,然后右键将该元素设置为页导航。
除此之外我们还需要采集另外一个数据,就是每一条职位信息的详情页连接 URL。
我们需要将鼠标悬停到合适的位置,然后提取其中的 href 属性。
通常我们需要找到 a 标签的 Href 属性,因为在网页中会通过 a标签的 Href 属性来定义点击该区域后跳转的网页地址。
同理将该数据列,重命名为【Link】
此时我们已经抓取了相关的数据字段,并且设置了分页。
接下来我们在【实时 Web 帮助程序】点击完成。
此时会回到 Power Automate Desktop 的操作配置界面。
在操作配置中会多出两个配置【从以下位置提取数据】和【要处理的最大网页数】
通过配置这两项参数,可以指定要提取全部的数据,还是只提取前几页。
如果我们只希望采集前三页的数据,则可以按照下图进行配置。
接下来的【存储数据模式】指定了我们采集的数据是存储为变量,还是 Excel 实例。
如果存储为变量,则我们可以通过其他操作把变量存储到其他的数据源中。
这里我们以直接存储为 Excel 实例做演示。
最终的配置如下。
关闭浏览器
最后我们再添加一个关闭浏览器的操作。
运行流程
操作都完成后,我们尝试运行流程。
在对话框中输入职位后,我们可以看到网页跳转了3次页面。
最后打开了一份 Excel 将数据都存储了下来。
但是我们发现里面有重复数据,这说明分页没有效果。
此时我们手动在浏览器中点击分页,查看数据果然没有发生变化。
这个时候很有可能就是浏览器本身有兼容性问题了。
我们可以尝试换一个浏览器试试,我们将之前的【启动新 Microsoft Edge】换成【启动新 Chrome】并且将其中的变量名称改为【Browser】
此时我们重新运行流程,可以发现这次使用 Chrome 打开后,就不会出现点击按钮没有反应的情况了,最后数据也成功进行了提取。
将数据存储为变量
那如果我们将采集到的数据存储为变量会发生什么呢?
当我们将数据存储模式设置为变量,然后运行流程后。在 Power AutomateDesktop 的变量区域会显示DataFromWebPage 变量已经有了数据,此时我们点击该变量可以查看到对应的数据内容。
接下来我们就可以通过其他操作来处理该变量。比如上一期文章中的方式,循环变量,然后将数据提交到指定的 Web 系统中。
或者我们可以将变量再次写入到一个 Excel 文件中。
写入到 Excel
首先启动一个 Excel 实例
然后添加一个【写入 Excel 工作表】操作,我们之前做的都是给单元格中写入一个固定值。
这次我们直接将【DataFromWebPage】这个数据表变量作为【要写入的值】填充到 A1 单元格。
运行流程后,可以看到全部数据都被填入到了我们新打开的 Excel 实例中。
此时该操作起到的效果和我们直接存储为Excel 的效果是一致的。
总结
本篇文章结合了之前学习到的 Web 自动化操作,再配合上【从网页中提取数据】操作,最终实现根据我们的筛选条件在招聘网站中批量采集数据的需求。掌握了这些操作以后,其他的网站数据采集都是大同小异,相信大家都能快速掌握并在实际生活工作中使用起来。
重点
由于使用Power Automate Desktop 从网页中提取,经常会需要提取链接但是定位,确定属性很是成问题因此我们可以借用css选择器来完成元素的定位
利用如下chrome插件 EasySelect。
首先,在浏览器中使用检查元素呼出调试工具,然后用 inspector 选择一个元素。
在右侧的面板选择一下“Easy Select”就能看到工具界面了。
如图所示:
界面分三个部分:
1. 层级选择面板
CSS 选择器通常通过上级元素来进行辅助定位,例如:
div.items > article > a.title
层级选择面板用于应对这种情况,这个面板分成两排,第一排是当前元素逐级的上级节点,点选后可以设置上级元素的 class 等,用于辅助定位。
可以看到最高是到 html 元素这一级,如果你不小心点多了,生成出的表达式会很长,可以使用第二排限制最终表达式的长度。
2. 元素选择面板
这个就是通过选择 class 还有元素属性构造选择器了。这个面板与层级选择面板是联动关系。
3. 结论面板
这里可以看到最终生成的表达式,当前页面的表达式匹配元素数量。
还可以进行高亮,以及最下面的表达式 / 语句复制。
其中属性常用的有
Text
Href
链接和文本