首页 > 其他分享 >rpa使用自带数据抓取方式抓取页面元素

rpa使用自带数据抓取方式抓取页面元素

时间:2024-01-26 16:59:00浏览次数:32  
标签:浏览器 元素 抓取 rpa 搜索 弹窗 页面

大家好,我是一方。

今天我们一起看一下如何使用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

相关文章

  • vue 一个页面切到另一个页面,再切回来的时候,滚动条的位置不变(只处理当前页面)
    1、使用 beforeRouteLeave 来记录路由跳转之前滚动条的位置beforeRouteLeave(to,from,next):离开路由之前执行的函数,可用于页面的反向传值,页面跳转;beforeRouteLeave(to,from,next){console.log('beforeRouteLeave.................')this.scroll=document.......
  • 神经网络优化篇:详解超参数调试的实践:Pandas VS Caviar(Hyperparameters tuning in prac
    超参数调试的实践如今的深度学习已经应用到许多不同的领域,某个应用领域的超参数设定,有可能通用于另一领域,不同的应用领域出现相互交融。比如,曾经看到过计算机视觉领域中涌现的巧妙方法,比如说Confonets或ResNets。它还成功应用于语音识别,还看到过最初起源于语音识别的想法成功应......
  • js根据地区判断进行跳转页面
    <script>//获取访问者的IP地址functiongetVisitorIP(){returnnewPromise((resolve,reject)=>{constxhr=newXMLHttpRequest();xhr.open('GET','https://ipinfo.io/json',true);xhr.onload=func......
  • vue实现将word转换为HTML页面,并实现类似word的目录导航和关键字搜索跳转
    <template>  <divclass="content">    <divclass="header">      <divclass="title">        XXXXXX      </div>      <divclass="search">   ......
  • 使用CrawlSpider类抓取纵横小说网页内容
    一:根据page页面解析出book_url二:解析来的response(book_url)并不是交给parse_item方法,而是交给了上面的rules处理,然后通过LinkExtractor提取静态页面数据url,url形成一个新的请求交给引擎,引擎一顿操作给到callback=‘parse_item’回调函数三:最后交给parse_item   ......
  • vue print.js 打印 此处打印不包含页面的页码 (打印方法二)
    <template><divclass="modalContainerprintAsset"ref="modalContainer"><divv-for="(items,index)intableDataPrint":key=indexstyle="page-break-after:always;zoom:1"ref="show......
  • Uni-app页面路由的五种写法
    uni.navigateTo(OBJECT)uni.redirectTo(OBJECT)uni.reLaunch(OBJECT)uni.switchTab(OBJECT)uni.navigateBack(OBJECT) 概要代码展示在最后,可以在应用中感受这几种不同方法的不同页面路由的方式有很多,在项目中遇到不同的跳转需求,就需要使用不同的跳转方法,下面介绍一下不......
  • 神经网络优化篇:详解为超参数选择合适的范围(Using an appropriate scale to pick hyper
    为超参数选择合适的范围假设要选取隐藏单元的数量\(n^{[l]}\),假设,选取的取值范围是从50到100中某点,这种情况下,看到这条从50-100的数轴,可以随机在其取点,这是一个搜索特定超参数的很直观的方式。或者,如果要选取神经网络的层数,称之为字母\(L\),也许会选择层数为2到4中的某个值,接着顺......
  • iOS 多级页面之间的代理方法使用
    当然可以。为了提供一个更详细的示例,我将为每个页面(Page1ViewController、Page2ViewController、Page3ViewController和Page4ViewController)编写示例代码,以展示如何通过代理模式将数据从Page4传递回Page1。定义Page4的代理协议首先,定义一个在Page4ViewController中使用的......
  • 前端性能测试 - 页面运行性能测试场景拓展
    前言对于前端场景复杂且需保持常态开启的页面(例如在线表格、高频大屏),客户在实际应用场景中长时间使用会很容易出现性能问题。但是在测试场景下,并不是那么容易观察到,为了更好的评估和描述出现的问题,当前主要对页面性能场景作以下分类:下载页面性能表现运行时性能表现这篇文章主要跟大......