Power Automate Desktop 网页爬虫

采集数据的用途非常广泛,常见的有电商的商品数据爬取,评论爬取,微信文章爬取等等。

我们本篇文章将以【智联招聘】的招聘职位数据采集为示例,帮助大家掌握 PowerAutomate Desktop 中的采集网页数据方法。

具体场景如下:

我们会打开智联招聘北京地区的搜索页:sou.zhaopin.com/?,然后输入关键词搜索,在搜索后得到招聘信息列表页,之后对数据进行采集。

创建流程

新建一个 Power Automate Desktop 流程,并命名为【Web 自动化 - 采集招聘数据】

v2-ccc90dbaf0148d925f3345a662ba9708_r

启动浏览器

既然要操作网页数据,那首先就需要启动浏览器实例。这里我们还是将【启动新Microsoft Edge】操作拖动到画布中,然后将【初始URL】配置为智联招聘的搜索网址sou.zhaopin.com/?

并将窗口设置为最大化。

v2-a999157fef9c70d4213bb67d616a6811_r

捕获 UI 元素

当进入网站后,我们通常需要对数据进行一些筛选,在筛选后才会执行采集的动作。

数据的筛选实际上就是对于网页中的文本框,按钮,下拉选项等 UI 元素的控制,这些我们都在上一章节中介绍过了,所以让我们快速完成这部分的操作。

通过右侧的UI元素组,添加 UI 元素,捕获【职位输入框】UI元素

v2-678fee4165b5cdbd6229e0983eff72a3_r

用同样的方式依次捕获:搜索按钮,工作经验等所需的筛选 UI 元素。

v2-74175be99e6ed00c5b77c36eaf615fc4_r

然后将几个 UI 元素重命名,使其名称更加友好。

v2-cce4c18172782b421a2a018e64769029_r

输入内容

接下来如果我们希望可以在每次流程运行的时候动态筛选指定的职位信息,那我们可以添加一个【显示输入对话框】,并按照下图进行配置。

v2-551610511a87c629d33bba871be16db5_r

输入职位

之后再通过【填充网页上的文本字段】指定【职位搜索框 UI 元素】,然后将要输入的文本设置为上一个操作中用户在输入框中输入的内容,也就是变量【UserInput】

v2-5e719a98a5eadd3a2f3ccec42dc16a30_r

点击搜索按钮

接下来再拖动【按网页上的按钮】操作,并将UI元素配置为捕获到的【搜索按钮】。

v2-b7dac084ef5970e384a8dece5a3744e9_r

此时我们运行一下流程,首先打开了智联招聘的搜索站点,然后弹出了对话框。

v2-c0e832685864d5646596875603340397_r

当我们在里面输入完职位,点击 ok 后,可以发现搜索框中已经输入了我们设置的职位,并且点击了搜索按钮,但是招聘结果并没有发生变化。

此时我们尝试手动点击搜索按钮,发现依然没有变化,这说明是网页本身的问题。并不是Power Automate Desktop 的操作没有生效。

但细心观察后,我们可以发现实际上网站上的 URL 部分已经发生了变化,其中多了一个叫做 kw=前端开发的文字,这就表示搜索按钮的点击已经生效,网址都变了,但是结果没出现,可能是网页的 BUG 。

v2-00e4d48b796783fa325b9d72d557f966_r

此时我们尝试刷新该网页,可以发现搜索结果生效了。

v2-8ef10b6648191160d0b9a393d421cacd_r

模拟刷新操作

所以由于招聘网站本身的功能问题,我们现在需要增加一个模拟刷新网页的操作。

这可以通过添加【转到网页】操作,然后将导航设置为【重新加载网页】。

v2-b35b167af584987e89c2c5dec4fe267d_r

此时我们再次运行流程,当搜索后,重新刷新了网页,因此已经成功实现了招聘数据筛选的功能。

v2-3e13490b8d88ab29f9219eae569c69b9_r

提取网页数据

接下来终于要开始采集数据了。

在 Web 自动化中专门有一个叫做 Web 数据提取的分类,该分类下的操作都是用来采集网页数据的。

v2-42aed32192d87b65aba2d5d94e4cfb18_r

这里我们将【从网页中提取数据】操作拖动到画布下面。

v2-07f4258b289726c5eb33b074e86e81ce_r

此时我们打开之前的招聘网站,可以发现在浏览器中多出了一个叫做【实时 Web 帮助程序 - 从网页中提取数据】的弹出框。

这个时候我们将鼠标移动并悬停到我们希望提取的数据上时,会和之前捕获 UI 元素一样,出现一个红色的框。

这时我们点击鼠标右键,将出现几个用来提取数据的选项,我们选择【提取元素值】,可以指定要提取当前 UI 元素的哪个属性,因为我们这里希望能够采集职位名称,所以直接选择【文本】即可。

v2-69572b2442df105c2cb06caed9d3510b_r

此时在【实时 Web 帮助程序 - 从网页中提取数据】的弹出框中将出现我们提取到的内容,职位名称。

v2-b86eca284cdfaf1ac90c9dd97ce0f4b5_r

接下来用同样的方式将职位的薪资,经验要求,学历要求和公司名都进行采集。

v2-60fe230ead226700cd14e4e4846b9207_r

此时我们采集的都是第一个职位的信息,但是我们实际希望能够把整个网页的数据都采集到。

此时我们用将鼠标移动到第二个职位的职位名称,然后进行提取操作。

一旦执行完这个操作后,可以发现【实时 Web 帮助程序】中,自动将整个网页的数据都进行了同样方式的提取,并生成了一个表格。

v2-fc4a278f0713f81ed317ad449873474b_r

接下来我们可以给表格中的列进行一下命名。

v2-dfcd6d0ee1a7d05a19d59eb38659af3f_r

除此之外,网页中还会出现很多页的数据,除了将当前页采集外,我们还要能够采集其他页面的数据。这时我们可以找到页面中的【下一页】按钮,然后右键将该元素设置为页导航。

v2-377e6e360eca1dc2d12223f7978d52c8_r

除此之外我们还需要采集另外一个数据,就是每一条职位信息的详情页连接 URL。

我们需要将鼠标悬停到合适的位置,然后提取其中的 href 属性。

通常我们需要找到 a 标签的 Href 属性,因为在网页中会通过 a标签的 Href 属性来定义点击该区域后跳转的网页地址。

v2-5f52e9bddd81a4da1d1c61335d230404_r

同理将该数据列,重命名为【Link】

v2-db69d26294626818b3a4bb315c9d4158_r

此时我们已经抓取了相关的数据字段,并且设置了分页。

接下来我们在【实时 Web 帮助程序】点击完成。

此时会回到 Power Automate Desktop 的操作配置界面。

在操作配置中会多出两个配置【从以下位置提取数据】和【要处理的最大网页数】

v2-06ed2b147539a1653af270547d2848d9_r

通过配置这两项参数,可以指定要提取全部的数据,还是只提取前几页。

如果我们只希望采集前三页的数据,则可以按照下图进行配置。

v2-0a04c9e7f69dd7d12d3685a1fc7ac055_r

接下来的【存储数据模式】指定了我们采集的数据是存储为变量,还是 Excel 实例。

如果存储为变量,则我们可以通过其他操作把变量存储到其他的数据源中。

这里我们以直接存储为 Excel 实例做演示。

最终的配置如下。

v2-bea182fd968cc499af7bea8d6f6dcf56_r

关闭浏览器

最后我们再添加一个关闭浏览器的操作。

v2-b6bdb041f88b3250b34066423b990f0f_r

运行流程

操作都完成后,我们尝试运行流程。

在对话框中输入职位后,我们可以看到网页跳转了3次页面。

最后打开了一份 Excel 将数据都存储了下来。

v2-575c4d008c9910643b65c2c2d1000998_r

但是我们发现里面有重复数据,这说明分页没有效果。

此时我们手动在浏览器中点击分页,查看数据果然没有发生变化。

这个时候很有可能就是浏览器本身有兼容性问题了。

我们可以尝试换一个浏览器试试,我们将之前的【启动新 Microsoft Edge】换成【启动新 Chrome】并且将其中的变量名称改为【Browser】

v2-cca8cc9bf96eeb72af0dae773d479dfb_r

此时我们重新运行流程,可以发现这次使用 Chrome 打开后,就不会出现点击按钮没有反应的情况了,最后数据也成功进行了提取。

v2-78fd46b46f2799a0486d6fa544c50775_r

将数据存储为变量

那如果我们将采集到的数据存储为变量会发生什么呢?

v2-4cf15d50df1b512ee33b9316951837dd_r

当我们将数据存储模式设置为变量,然后运行流程后。在 Power AutomateDesktop 的变量区域会显示DataFromWebPage 变量已经有了数据,此时我们点击该变量可以查看到对应的数据内容。

v2-33ad6bf361b6bc7197b3ac6fe82813d6_r

接下来我们就可以通过其他操作来处理该变量。比如上一期文章中的方式,循环变量,然后将数据提交到指定的 Web 系统中。

或者我们可以将变量再次写入到一个 Excel 文件中。

写入到 Excel

首先启动一个 Excel 实例

v2-c3dca038ac28ff930a5cb4590aed0435_r

然后添加一个【写入 Excel 工作表】操作,我们之前做的都是给单元格中写入一个固定值。

这次我们直接将【DataFromWebPage】这个数据表变量作为【要写入的值】填充到 A1 单元格。

v2-5dc7dc0486966295d6a3d33f7d88301e_r

运行流程后,可以看到全部数据都被填入到了我们新打开的 Excel 实例中。

此时该操作起到的效果和我们直接存储为Excel 的效果是一致的。

v2-b7c9281cdff46627b77873b93b188142_r

总结

本篇文章结合了之前学习到的 Web 自动化操作,再配合上【从网页中提取数据】操作,最终实现根据我们的筛选条件在招聘网站中批量采集数据的需求。掌握了这些操作以后,其他的网站数据采集都是大同小异,相信大家都能快速掌握并在实际生活工作中使用起来。

重点

由于使用Power Automate Desktop 从网页中提取,经常会需要提取链接但是定位,确定属性很是成问题因此我们可以借用css选择器来完成元素的定位

利用如下chrome插件 EasySelect。

首先,在浏览器中使用检查元素呼出调试工具,然后用 inspector 选择一个元素。

在右侧的面板选择一下“Easy Select”就能看到工具界面了。

如图所示:

界面分三个部分:

1. 层级选择面板

CSS 选择器通常通过上级元素来进行辅助定位,例如:

div.items > article > a.title

层级选择面板用于应对这种情况,这个面板分成两排,第一排是当前元素逐级的上级节点,点选后可以设置上级元素的 class 等,用于辅助定位。

可以看到最高是到 html 元素这一级,如果你不小心点多了,生成出的表达式会很长,可以使用第二排限制最终表达式的长度。

2. 元素选择面板

这个就是通过选择 class 还有元素属性构造选择器了。这个面板与层级选择面板是联动关系。

3. 结论面板

这里可以看到最终生成的表达式,当前页面的表达式匹配元素数量。

还可以进行高亮,以及最下面的表达式 / 语句复制。

其中属性常用的有

Text

Href

链接和文本

4f65ceb849a008ac8e169cf5282b3484-2

相关推荐

Power Automate了解变量

在开发流程时,通常会在多个操作中重用信息并根据特定条件对其进行更新。例如,您可能需要存储这些变量并稍后在流程中 ...