大家好,我是一方。

今天我们一起看一下如何使用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. elementui中el-checkbox 选中时的详细介绍

    checkbox-group 把多个checkbox管理为一组(需要注意的坑) 很多时候我们需要会遇见这样的场景. 比如用户需要选择多个值. 这个时候我们需要把多个 checkbox 放置在check ...

  2. vue2-vue3监听子组件的生命周期的两种方式

    1.生命周期 生命周期是指:vue实例从创建到销毁这一系列过程.vue官网生命周期如下图所示: vue的生命周期有多少个 beforeCreate, created, beforeMount, mou ...

  3. vue3.0中reactive的正确使用姿势

    场景 在项目开发的时候,前端肯定是先写静态页面 在静态页面写好之后 然后就可以与后端对接数据了[高兴] 但是在对接接口的时候 我们会发现后端返回来的字段与前端在页面上写的可能不一致 这个时候有意思的事 ...

  4. 手把手教学构建证券知识图谱/知识库(含码源):网页获取信息、设计图谱、Cypher查询、Neo4j关系可视化展示

    手把手教学构建证券知识图谱/知识库(含码源):网页获取信息.设计图谱.Cypher查询.Neo4j关系可视化展示 demo展示: 代码结构 stock-knowledge-graph/ ├── __i ...

  5. python3 ACM模式的输入输出例子教学

    Python的输入是字符串,所以要自己转类型 strip去掉左右两端的空白符,返回str slipt把字符串按空白符拆开,返回[str] map把list里面的值映射到指定类型,返回[type] EO ...

  6. 提升编码幸福感的秘密「GitHub 热点速览」

    写代码是一个充满挑战的事情,在这段充满挑战的旅途中,我们都渴望找到那个提升幸福感的秘密.没准是更先进或是更快的工具,希望本期热点速递的开源项目,能给你带来启迪和乐趣,上菜! 第一个上场的是一款用 Ru ...

  7. 使用Fiddler复制并转发http响应数据

    1.安装Fiddler 略 2.编辑FiddlerScript,增加拦截判断 Goto OnBeforeResponse,跳转到指定函数,在函数中添加拦截某些http代码,如下. if (oSessi ...

  8. Gitee一个仓库存储多个项目

    需求:     平时会做一些小项目,有时候一个小项目就几行代码,十几K的项目,给这些小项目建一个库保存太奢侈了太浪费了,所以换个思路,根据项目类型来创建库,然后每个小项目以孤立分支的方式存到该库中,这 ...

  9. ESET防病毒软件 v16.2.11.0 - 安全

    上次编写了笔者自己的防护软件的博文:我的电脑防护安全软件 ,今天把ESET防病毒软件的套装的下载地址发出来,让广大的朋友能够免费使用到这个软件. 链接:https://pan.baidu.com/s/ ...

  10. 【LLM】提示工程技术提炼精华分享

    一.提示工程概述 提示工程(Prompt Engineering)是一门较新的学科,关注提示词开发和优化,帮助用户将大语言模型(Large Language Model, LLM)用于各场景和研究领域 ...