艺赛旗RPA 网页处理系列(四):网页表格中获取数据,并点击相应记录后的按钮操作说明总结
目前藝賽旗RPA已經(jīng)更新到8.0版本,可以讓所有用戶免費(fèi)下載試用http://www.i-search.com.cn/index.html?from=line1 (復(fù)制鏈接下載)
最近有很多同學(xué)都在問如何取得網(wǎng)頁表格里的數(shù)據(jù)?如何根據(jù)表格里的數(shù)據(jù)點(diǎn)擊相應(yīng)的操作?
這兩個(gè)問題實(shí)際上在我們的社區(qū)里已經(jīng)有相關(guān)的帖子了,但還是很多人會(huì)問,也不會(huì)操作
- 第一個(gè)問題,可參考 如何從 table 中取出數(shù)據(jù) 6.0 版本
- 第二個(gè)問題,可參考 點(diǎn)擊網(wǎng)頁表格中特定行里面的一個(gè)操作按鈕
在這里我做一個(gè)總結(jié),并一步步的操作說明供大家參考
在實(shí)際操作之前,你需要做以下幾件事情:
把上面兩個(gè)帖子可以先瀏覽一下
了解一些 css selector 的知識(shí),我也不是專家,這里不做總結(jié) ?,也是百度里搜資料看,大家也要養(yǎng)成自學(xué)的一些技能
學(xué)會(huì)一些審查網(wǎng)頁元素的小技巧,可參考 網(wǎng)頁檢查 / 審查小技巧
需要了解一些 python 語言 pandas 的知識(shí)
需求實(shí)現(xiàn)說明
好了,我們先來說一下需求,我需要在表格中找到產(chǎn)品代碼為 test120 的記錄,并點(diǎn)擊對(duì)應(yīng)的刪除按鈕。截圖如下
那么在解決這個(gè)問題的時(shí)候,首先就是要先能獲取到表格數(shù)據(jù)并匹配到相應(yīng)的記錄(如 test120),然后再找到該記錄對(duì)應(yīng)的刪除按鈕進(jìn)行點(diǎn)擊操作,因此大致可以分為兩個(gè)部分,也就是開篇說的第一個(gè)和第二個(gè)問題的集合。
獲取網(wǎng)頁表格數(shù)據(jù)
3.1 拾取網(wǎng)頁表格
使用一個(gè)可拾取的組件來拾取表格,這里用【鼠標(biāo)點(diǎn)擊】組件來操作
這里需要注意,拾取的時(shí)候要拾取整個(gè)網(wǎng)頁的表格,而不是表格中的某一個(gè)內(nèi)容,正確拾取如下圖所示
也可以通過設(shè)計(jì)器里的圖片預(yù)覽功能驗(yàn)證你拾取的對(duì)不對(duì)
3.2 獲取網(wǎng)頁表格的 selector
【鼠標(biāo)點(diǎn)擊】組件的查找路徑中,選擇 selector
7289e87543b148e5b30cbcfa442e6337_E5DA75892CE647CB8DDAE307D2AE570B.png
選擇后通過編譯,看下對(duì)應(yīng)的代碼
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)'這種最后一個(gè) > 后面是 TABLE 標(biāo)簽的,就是我們想要的。
3.3 獲取表格中數(shù)據(jù)
通過使用以下代碼獲取表格里的數(shù)據(jù),這里不做詳述,可復(fù)制使用
可以通過函數(shù)或代碼塊的方式調(diào)用
import ubpa.iie as iie
import re
import pandas as pd
#把3.2章節(jié)當(dāng)中selector=后面的代碼復(fù)制到這里
table_string = iie.get_html(title=r’理財(cái)管理’,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 = re.compile(’’)
tb_end = re.compile(’’)
last_str = tb_end.sub(’’, tb_start.sub(’’, table_string))
#調(diào)用了pandas中的read_html方法,注意header=0,有些表格header不是0
data = pd.read_html(last_str, flavor=“bs4”, header=0)[0]
#這一步把‘產(chǎn)品代碼’這列轉(zhuǎn)為字符串,可能有None或者數(shù)字
data[‘產(chǎn)品代碼’] = data[‘產(chǎn)品代碼’].apply(str)
#打印data
print(data)
print(’-------------------’)
#通過這個(gè),你可以看到data有哪些列
print(data.columns)
實(shí)際上【鼠標(biāo)點(diǎn)擊】組件的目的就是為了獲取網(wǎng)頁表格的 selector 而已,獲取后該組件就可以刪掉了
運(yùn)行結(jié)果如下:
到此就成功獲取了當(dāng)前網(wǎng)頁表格中的所有數(shù)據(jù),我們想要?jiǎng)h除的 test120 的數(shù)據(jù)記錄也在其中
需要注意,通過 pandas 讀取出來的數(shù)據(jù)都是 dataframe 類型的數(shù)據(jù)集
3.4 過濾提取數(shù)據(jù)
使用【數(shù)據(jù)過濾】組件,對(duì)剛剛獲取的 dataframe 類型變量 data 進(jìn)行數(shù)據(jù)過濾,并返回給變量 data2
37276cb9b78b4bf08d27f5fd19c6c80c_279E22E4D20E418D847B4D7FB6DCF5AA.png
我們已經(jīng)獲取到了產(chǎn)品代碼為 test120 的數(shù)據(jù)記錄
3.5 獲取記錄的行編號(hào)
#獲取行編號(hào),這是一個(gè)數(shù)組list,如果有多個(gè)記錄,在list中就會(huì)有多個(gè)元素
#如果index里有多個(gè)值,也就代表了多個(gè)記錄,可以使用循環(huán)遍歷操作,這里不做詳述,交給你們了
print(data2.index)
#獲取編號(hào)里的第一個(gè)元素單位
print(data2.index[0])
運(yùn)行結(jié)果:
說明該記錄在這里的 index 是 3
4.1 找規(guī)律
通過組件拾取獲得組件的 selector,并找到規(guī)律
先拾取 test120 這條記錄對(duì)應(yīng)的刪除按鈕
獲取的 test120 這條記錄的 selector 如下
‘#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(5) > TD:nth-of-type(8) > A:nth-of-type(2) > B:nth-of-type(1)’
我們?cè)俜謩e獲取前面 3 個(gè)記錄刪除按鈕的 selector,看看有什么規(guī)律可循
#頁面第1??條記錄
‘#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(8) > A:nth-of-type(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-of-type(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-of-type(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-of-type(2) > B:nth-of-type(1)’
這下能發(fā)現(xiàn)出什么了么?
test120 在數(shù)據(jù)表格里的 index 是 3(3.5 章節(jié))
而對(duì)應(yīng)的刪除按鈕的TR:nth-of-type(5)是 5
那只要申明一個(gè)變量,變量的內(nèi)容就是 index+2,用變量的方式替換TR:nth-of-type(5)里面寫死的值不就可以了么
4.2 申明變量
根據(jù) 4.1 章節(jié)中所得邏輯,先聲明一個(gè)變量 test,用于存放會(huì)變化的值
#在設(shè)計(jì)器代碼窗口中,將鼠標(biāo)拾取刪除按鈕的selector=后面的代碼復(fù)制過來,并賦值給test變量
#可使用代碼塊組件進(jìn)行變量的賦值
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 鼠標(biāo)點(diǎn)擊刪除按鈕實(shí)現(xiàn)
這一步也是最簡(jiǎn)單的,只要將 test 變量直接填入【鼠標(biāo)點(diǎn)擊】組件的查找路徑中即可
至此,一個(gè)簡(jiǎn)單的網(wǎng)頁表格中獲取數(shù)據(jù),并點(diǎn)擊相應(yīng)記錄后的按鈕操作就完成了。
完整運(yùn)行后的結(jié)果
如果當(dāng)前頁面有多條記錄需要做刪除操作,就需要使用循環(huán)來實(shí)現(xiàn),這里就不說了,就交給各位同學(xué)去做了
針對(duì)此場(chǎng)景,我們也會(huì)推出操作說明視頻及參考工程,不過最主要的還是要大家自己動(dòng)手去學(xué)習(xí)是試。 ?
總結(jié)
以上是生活随笔為你收集整理的艺赛旗RPA 网页处理系列(四):网页表格中获取数据,并点击相应记录后的按钮操作说明总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Genius In Our Lives
- 下一篇: 乔安智联未能找到使用指定服务器,智联物联