我有一个方案来读取表格的内容并根据特定的条件打印相同的内容。如何在表中非常有效地提取行数据?
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:确切地说,循环遍历整个没有意义。我怎样才能使其效率和优化? –