大家好,我是一方。
今天我们一起看一下如何使用rpa自带的功能来抓取自己想要的页面元素,这里我们以抖音为例来抓取某个领域的作者列表。
想要获取页面元素,大概的流程为:确定页面元素、分析页面元素、使用自带的工具便捷抓取元素。
我们正式开始,首先新建一个抖音作者列表的项目,并快速把启动浏览器和打开、关闭浏览器的流程拉一下,关闭浏览器的流程先别连上,不然刚打开浏览器就关闭了,等测试没问题再关:
老规矩,将打开浏览器流程中第一行的Dim hWeb删除。
新建一个浏览器的全局变量:
打开浏览器流程,打开浏览器的同时设置打开的链接为 https://www.douyin.com:
我们执行一下,可以看到会有一个弹窗挡住了搜索框,我们需要对这个弹窗处理一下,具体逻辑是:当打开页面并且页面加载完成后如果检测到这个弹窗则点击关闭按钮,关闭弹窗:
我们添加一个等待网页加载的命令并且点击从界面上选取元素:
这里我选取搜索框,也就是说我们判断搜索框是否出现,当搜索框出现时则判断页面加载完成了,这里为啥不判断这个弹窗呢?因为这个弹窗不是每次都弹,要是判断这个弹窗的话,那可能一直取不到元素,当然也有破解之法,一个是超时、一个是错误可继续执行:
我们继续先判断搜索框,当搜索框出现后过几秒再判断弹窗是否出现,我们先选择输入控件:
我们看看元素出现时的输出和未出现时(我随便选一个)的输出:
我们切换为源代码模式看看它的命令原型:
我们再看看官方文档是如何定义这个命令的:
这里的iDelayAfter和iDelayBefore延时伪代码是这样:
输入参数的类型都写了,输出参数的类型却没写,只知道是枚举的0(不存在)和1(存在),推断应该是number类型:
所以我们只需要判断iRet即可知道元素是否存在了,超时也为不存在。
代码如下,我们自己写一个判断:
再判断弹窗是否出现,出现则关闭。此时出现了尴尬的一幕,自带的工具无法选择到弹窗,而是选择到了底层的video:
那么此时也有办法解决,就是使用js来检测元素是否存在:
还得是js好使,一行js搞定!
当元素存在时,我们执行:
OK,关闭弹窗。
我们将js代码写一份rpa格式的:
Dim bRet,iRet,checkCloseExistJsCode,closeExist,clickCloseExistJsCode
hWeb = WebBrowser.Create("chrome","https://www.douyin.com",30000,{"bContinueOnError":false,"iDelayAfter":2000,"iDelayBefore":200,"sBrowserPath":"","sStartArgs":""})
iRet = WebBrowser.WaitPage(hWeb,@ui"输入控件<input>1",6000,{"bContinueOnError":true,"iDelayAfter":300,"iDelayBefore":200})
If iRet
Log.Info("存在")
checkCloseExistJsCode = '''
document.querySelector("div.dy-account-close")
'''
clickCloseExistJsCode = '''
document.querySelector("div.dy-account-close").click()
'''
// 如果不存在弹窗则closeExist为null
closeExist = WebBrowser.RunJS(hWeb,checkCloseExistJsCode,true,{"bContinueOnError":true,"iDelayAfter":300,"iDelayBefore":200})
If closeExist
WebBrowser.RunJS(hWeb,clickCloseExistJsCode,true,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200})
End If
Else
Log.Info("不存在")
End If
非源代码流程:
好,我们进入新增一个流程,作用是在输入框输入关键字并搜索:
搜索的详情流程如下:
分别是先在搜索框输入rpa是什么、再点击搜索按钮、再点击用户tab,和小红书差不多。
接下来我们分别抓取抖音作者的昵称、抖音号,我们点击数据抓取:
我们首先选择昵称:
再次选择另一个作者的昵称:
点击确定:
标题就有了:
我们同理拿到抖音号:
OK,昵称和抖音号都抓取到了,其他字段也可以同样方法获取。
这篇文章就到这里啦!如果你对文章内容有疑问或想要深入讨论,欢迎在评论区留言,我会尽力回答。同时,如果你觉得这篇文章对你有帮助,不妨点个赞并分享给其他同学,让更多人受益。
想要了解更多相关知识,可以查看我以往的文章,其中有许多精彩内容。记得关注我,获取及时更新,我们可以一起学习、讨论技术,共同进步。
感谢你的阅读与支持,期待在未来的文章中与你再次相遇!
标签:浏览器,元素,抓取,rpa,搜索,弹窗,页面 From: https://www.cnblogs.com/shuinanxun/p/17989734