我正在使用Python的lxml
库,代码如下:
trs = doc.xpath("//div[@id='divGridData']/div[2]/table/tr")
if not trs:
trs = doc.xpath("//div[@id='divGridData']/div[2]/table/tbody/tr")
所以问题出在上。我想知道是否可以用类似于正则表达式中的
?
将这两个XPath表达式合并为一个。使用或运算符:|
如下:
"//div[@id='divGridData']/div[2]/table/tr
|
//div[@id='divGridData']/div[2]/table/tbody/tr"
//div[@id='divGridData']/div[2]/table
下的tr
元素,无论是否有tbody
,在XPath中再次使用//
即可:"//div[@id='divGridData']/div[2]/table//tr"
我不知道你的结构有多“深”,但如果在你的table
/ tbody
元素下面只有一个维度的tr
元素,那么你可以将其缩短为:
//div[@id='divGridData']/div[2]/table[./tr | ./tbody]//tr
tr 元素的深层结构,而你对其不感兴趣),那么我也不知道除了@hjpotter92已经提供的解决方案之外的其他解决方案。