大家好,我是一方。

今天我们一起看一下如何使用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使用自带数据抓取方式抓取页面元素的更多相关文章

  1. 测试开发Python培训:抓取新浪微博抓取数据-技术篇

    测试开发Python培训:抓取新浪微博抓取数据-技术篇   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest的se ...

  2. Scrapy 通过登录的方式爬取豆瓣影评数据

    Scrapy 通过登录的方式爬取豆瓣影评数据 爬虫 Scrapy 豆瓣 Fly 由于需要爬取影评数据在来做分析,就选择了豆瓣影评来抓取数据,工具使用的是Scrapy工具来实现.scrapy工具使用起来 ...

  3. 网站爬取-案例三:今日头条抓取(ajax抓取JS数据)

    今日头条这类的网站制作,从数据形式,CSS样式都是通过数据接口的样式来决定的,所以它的抓取方法和其他网页的抓取方法不太一样,对它的抓取需要抓取后台传来的JSON数据,先来看一下今日头条的源码结构:我们 ...

  4. VBA GET POST HTTP VBA网络爬虫 最新Excel自动获取股票信息源码 EXCEL自动获取网络数据 最新VBA自动抓取股票数据源码

    最新Excel自动获取股票信息源码 EXCEL自动获取网络数据 最新VBA自动抓取股票数据源码 通过接口获取股票数据内容的主要优点包括以下几点: 实时性高:通过访问股票数据接口,可以实时获取到股票的实 ...

  5. 【转载】ASP.NET以Post方式抓取远程网页内容类似爬虫功能

    使用HttpWebRequest等Http相关类,可以在应用程序中或者网站中模拟浏览器发送Post请求,在请求带入相应的Post参数值,而后请求回远程网页信息.实现这一功能也很简单,主要是依靠Http ...

  6. (3)分布式下的爬虫Scrapy应该如何做-递归爬取方式,数据输出方式以及数据库链接

    放假这段时间好好的思考了一下关于Scrapy的一些常用操作,主要解决了三个问题: 1.如何连续爬取 2.数据输出方式 3.数据库链接 一,如何连续爬取: 思考:要达到连续爬取,逻辑上无非从以下的方向着 ...

  7. 写论文,没数据?R语言抓取网页大数据

    写论文,没数据?R语言抓取网页大数据 纵观国内外,大数据的市场发展迅猛,政府的扶持也达到了空前的力度,甚至将大数据纳入发展战略.如此形势为社会各界提供了很多机遇和挑战,而我们作为卫生(医学)统计领域的 ...

  8. 02. 爬取get请求的页面数据

    目录 02. 爬取get请求的页面数据 一.urllib库 二.由易到难的爬虫程序: 02. 爬取get请求的页面数据 一.urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用 ...

  9. C#使用Selenium实现QQ空间数据抓取 说说抓取

    上一篇讲的是如何模拟真人操作登录QQ空间,本篇主要讲述一下如何抓取QQ说说数据 继续登录空间后的操作 登陆后我们发现QQ空间的菜单其实是固定的,只需要找到对应元素就可以,继续XPath 可以得到地址 ...

  10. Android笔记——Android中数据的存储方式(一)

    Android中数据的存储方式 对于开发平台来讲,如果对数据的存储有良好的支持,那么对应用程序的开发将会有很大的促进作用. 总体的来讲,数据存储方式有三种:一个是文件,一个是数据库,另一个则是网络.其 ...

随机推荐

  1. net core控制台程序使用依赖注入读取appsettings.json配置文件

    .net 2.1有用,转自https://www.jianshu.com/p/726d1aa2795c 1.项目下添加appsettings.json文件,并将属性-复制到输出目录,设置为如果较新则复 ...

  2. Unity SetActive Event

    网上查了一下Unity的SetActive变化事件没有找到,我想到用另一种思路来实现这个事件通知,它可用来调试是何处把某个gameobject隐藏掉了 Unity提供了这两个函数,OnEnable,O ...

  3. 从零开始配置 vim(5)——本地设置与全局设置

    在前面的一系列文章中,我们介绍了使用 :noremap 进行键盘映射,使用 set 来设置选项和 vim 的变量.并且已经在配置文件中对他们进行了相关配置. 在介绍设置那一篇文章中我们提到了,lua ...

  4. TienChin 活动管理-修改活动

    后端 ChannelController.java @PreAuthorize("hasPermission('tienchin:channel:edit')") @GetMapp ...

  5. Elasticsearch中的分页查询限制和近似去重统计

    Elasticsearch 前言 深度分页的问题 如何解决 修改默认值 使用search_after方法 scroll 滚动搜索 es中的近似聚合 总结 Elasticsearch 前言 最近工作中用 ...

  6. python快速入门【六】----真题测试

    python入门合集: python快速入门[一]-----基础语法 python快速入门[二]----常见的数据结构 python快速入门[三]-----For 循环.While 循环 python ...

  7. iPhone 15 Pro Max的Type-C接口有多牛?实测USB3比USB2快11倍

    苹果最新的iPhone 15系列和iPhone 15 Pro系列新机,尽管两者都是Type-C接口,但速度相差20倍. 据了解,iPhone 15 Pro/Max搭载的苹果A17 Pro芯片内含专门的 ...

  8. Socket.D 协议的开发缘由

    为什么搞个新协议? 2021年时,想为 Solon 生态 提供一种 MVC 体验的 Socket 和 WebSocket 开发方式.这个想法,要求消息"能路由"."有元信 ...

  9. [Spring6.0源码解析]简述@Configuration注解

    @Configuration 标注在类上,启动 Spring 会自动扫描@Configuration注解的类,将其注册到IOC容器并实例化bean对象.如果在@Configuration注解的类中使用 ...

  10. 移位寄存器的设计(VHDL)及testbench的编写

    移位寄存器是一种常用的存储元件,此处由D触发器构成,如下图所示. 当时钟边沿到来时,存储在移位寄存器的数据朝一个方向移动一个BIT位. 移位寄存器的功能主要为:串并转换,并串转换和同步延迟. vhdl ...