网页表格抓取(如何取得网页表格里的数据点击相应的操作?(图))

优采云 发布时间: 2022-03-17 19:12

  网页表格抓取(如何取得网页表格里的数据点击相应的操作?(图))

  目前,一赛奇RPA已经更新到8.0版本,所有用户都可以免费下载试用(复制链接下载)

  问题描述

  最近很多同学都在问如何获取web表单中的数据?如何根据表格中的数据点击相应的动作?

  这两个问题在我们社区其实也有相关的帖子,但是很多人还是问不操作

  在实际操作之前,您需要做以下事情:

  看看上面两个帖子

  了解一些css选择器的知识,我不是专家,这里就不做总结了?也是在百度上搜索信息。每个人也应该培养一些自学的技能。

  学习一些审查网页元素的技巧,请参考网页检查/审查技巧

  需要了解一些python语言pandas的知识

  需求实现声明

  好吧,让我们先谈谈要求。我需要在表格中找到产品代码为test120的记录,然后点击对应的删除按钮。下面的截图

  

  所以在解决这个问题的时候,首先是拿到表数据,匹配对应的记录(比如test120),然后找到记录对应的删除按钮点击,这样就可以大致划分了分为两部分,即开头提到的第一和第二个问题的合集。

  获取网页表单数据

  3.1 领取网页表格

  使用pickable组件拾取桌子,这里使用【鼠标点击】组件进行操作

  这里需要注意的是,拾取时,要拾取的是整个网页的表格,而不是表格中的某个内容。正确的采摘如下图所示

  

  您还可以通过设计器中的图像预览功能验证您选择的内容是否正确。

  

  3.2 获取web表单的选择器

  【鼠标点击】在组件的搜索路径中,选择选择器

  

  7289e87543b148e5b30cbcfa442e6337_E5DA75892CE647CB8DDAE307D2AE570B.png

  选择好后编译看看对应的代码

  

  选择器=r'body > DIV:nth-of-type(1) > FORM:nth-of-type(1) > DIV:nth-of-type(2) > DIV: nth-of-type(1) > TABLE:nth-of-type(1)'最后一个 > 后面跟着一个 TABLE 标签,这就是我们想要的。

  3.3 获取表中的数据

  使用如下代码获取表中的数据,这里不再详述,可以复制使用

  可以作为函数或代码块调用

  将 ubpa.iie 导入为 iie

  重新*敏*感*词*

  将熊猫导入为 pd

  #将3.2章节selector=后面的代码复制到这里

  table_string = iie.get_html(title=r'财务管理',selector=r'body > DIV:nth-of-type(1) > FORM:nth-of-type(1) > DIV: nth-of-type(2) > DIV:nth-of-type(1) > TABLE:nth-of-type(1)')

  tb_start = 桩('')

  tb_end = 桩('')

  last_str = tb_end.sub('', tb_start.sub('', table_string))

  #在pandas中调用read_html方法,注意header=0,有些表头不是0

  数据 = pd.read_html(last_str, flavor="bs4", header=0)[0]

  #此步骤将'product code'列转换为字符串,可以收录None或数字

  data['产品代码'] = data['产品代码'].apply(str)

  # 打印数据

  打印(数据)

  打印(' - - - - - - - - - -')

  #通过这个可以看到数据有哪些列

  打印(数据。列)

  其实【鼠标点击】组件的目的是获取web表单的选择器。获取组件后,即可删除组件。

  结果如下:

  

  至此,当前web表单中的所有数据已经​​成功获取,我们要删除的test120的数据记录也在其中

  需要注意的是,pandas读出的数据都是dataframe类型的数据集

  3.4 过滤和提取数据

  使用【数据过滤器】组件对刚刚得到的dataframe类型变量data的数据进行过滤,返回给变量data2

  

  37276cb9b78b4bf08d27f5fd19c6c80c_279E22E4D20E418D847B4D7FB6DCF5AA.png

  我们得到了产品代码test120的数据记录

  3.5 获取记录的行号

  #获取行号,这是一个数组列表,如果有多条记录,列表中会有多个元素

  #如果索引中有多个值,也代表多条记录,可以使用循环遍历操作,这里就不赘述了,留给大家

  打印(数据2.索引)

  #获取数字中的第一个元素单元

  打印(数据2.索引[0])

  运行结果:

  

  表示这里记录的索引是3

  找到记录对应的按钮,点击

  4.1 找到模式

  通过组件拾取获取组件的选择器并找到规则

  先拿起记录test120对应的删除按钮

  

  

  test120得到的记录的选择器如下

  '#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(5) > TD:nth-of-type(8) > A:nth-类型(2) > B:nth-of-type(1)'

  我们分别获取前三个记录删除按钮的选择器,看看可以遵循哪些规则

  #第1⃣️页记录

  '#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(8) > A:nth-类型(2) > B:nth-of-type(1)'

  #第2⃣️页记录

  '#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(3) > TD:nth-of-type(8) > A:nth-类型(2) > B:nth-of-type(1)'

  #第3⃣️页记录

  '#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(4) > TD:nth-of-type(8) > A:nth-类型(2) > B:nth-of-type(1)'

  #test120 记录

  '#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(5) > TD:nth-of-type(8) > A:nth-类型(2) > B:nth-of-type(1)'

  现在能找到什么?

  在这里你会发现 TR:nth-of-type(3) 中的数字是 TR:nth-of-type(2) 中的第 2 条记录发生变化,表示第 n 个- of-type 从 2 开始编号

  数据表中test120的索引为3(3.5节)

  而对应的删除按钮的 TR:nth-of-type(5) 为 5

  那么只要声明一个变量,变量的内容就是index+2,可以把TR:nth-of-type(5)换成变量里面的硬编码值)

  4.2 声明变量

  根据4.1章节得到的逻辑,先声明一个变量test来存放会变化的值

  #在设计器代码窗口中,复制鼠标selector=后面的代码,拾取删除按钮,赋值给测试变量

  #可以使用代码块组件来赋值变量

  test = r'#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(%d) > TD:nth-of-type(8) > A:nth -of-type(2) > B:nth-of-type(1)'%(data2.index[0] + 2)

  4.3 鼠标点击删除按钮实现

  这一步也是最简单的,只要在【鼠标点击】组件的搜索路径中直接填写测试变量即可

  

  至此,从一个简单的web表单中获取数据,点击对应记录后的按钮操作就完成了。

  完全运行后的结果

  

  如果当前页面有多条记录需要删除,则需要使用循环来实现。我这里就不说了,留给学生去做吧。

  针对这种场景,我们也会推出操作指导视频和参考项目,但最重要的是让大家自己学习和尝试。?

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线