我有一個方案來讀取表格的內容並根據特定的條件打印相同的內容。如何在表中非常有效地提取行數據?
ColA ColB ColC ColD ColE
1 Matt Dep1 NY 1234
2 Joy Dep2 Sydeny 1234
3 Matt Dep1 Canada 1234
4 Stewart Dep3 Sydney 1234
這就是表的樣子。我正在獲取表格內容並進行打印。 即使我能夠得到我想要的。比方說,我想將行存儲在一個數組中,其中ColB包含Matt,ColC包含Dep1。它通過獲取行數,然後繼續迭代整行,將tr [row_index]更改爲多達第一個循環。儘管預期數據不在後面的行中。如果我們有1000行,這很耗時。
有沒有什麼辦法可以優化它?我們可以通過tr[row_index]
所做的包含多個列值,像這樣?
tdata = driver.get_text("xpath=//table[@id='table1234']/tbody" #tdata will have the entire table content
rows = driver.get_matching_xpath_count("//table[@id='table1234']/tbody//tr")
for i in range(1, int(rows)+1):
if "matt" = driver.get_text("xpath=//table[@id='table1234']/tbody/tr["+str(i)+"]/td[2]") and "Dep1" == driver.get_text("xpath=//table[@id='table1234']/tbody/tr["+str(i)+"]/td[3]"):
row_rext = row_text=driver.get_text("xpath=//table[@id='table1234']/tbody/tr["+str(i)+"]")
#print or store in a list, should not be a problem
reg-ex的任何可能性?或者其他有效的方式?
[更新]
I could able to achieve it with reg-ex in a faster way. Any selenium way to achieve the same ?
頁面是否有jQuery? –
一旦你提取了行,子XPath表達式應該是相對於每一行的,而不是再次從根中搜索......這沒有意義 – Borna
@Borna:確切地說,循環遍歷整個沒有意義。我怎樣才能使其效率和優化? –