网页表格抓取(如何取得网页表格里的数据点击相应的操作?(图))
优采云 发布时间: 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表单中获取数据,点击对应记录后的按钮操作就完成了。
完全运行后的结果
如果当前页面有多条记录需要删除,则需要使用循环来实现。我这里就不说了,留给学生去做吧。
针对这种场景,我们也会推出操作指导视频和参考项目,但最重要的是让大家自己学习和尝试。?