我正在使用lxml
和python,如下所示:
trs = doc.xpath("//div[@id='divGridData']/div[2]/table/tr")
if not trs:
trs = doc.xpath("//div[@id='divGridData']/div[2]/table/tbody/tr")
所以问题是tbody
。我想知道我是否可以将两个XPath表达式改为一个类似?
的正则表达式。
答案 0 :(得分:2)
使用或运算符:|
如下
"//div[@id='divGridData']/div[2]/table/tr
|
//div[@id='divGridData']/div[2]/table/tbody/tr"
答案 1 :(得分:1)
要选择tr
下的//div[@id='divGridData']/div[2]/table
元素,无论是否有干预tbody
,请在XPath中再次使用//
:
"//div[@id='divGridData']/div[2]/table//tr"
答案 2 :(得分:0)
我不知道"深度"您的结构是,但如果table
/ tbody
元素正下方只有//div[@id='divGridData']/div[2]/table[./tr | ./tbody]//tr
元素的一个维度,那么您可以将其缩短为:
tr
否则(如果深层结构中有更多eyJ1cmxTZXJ2bGV0IjoiaHR0cHM6Ly9kZW1vcy5pbmZhcGxpYy5lcy9pbnZlbnRhcmlvd2ViL0ludmVudGFyaW9KU09OIiwidG9rZW4iOiI1MjFjY2I5Ny0wNWZkLTRjZGEtYjYxMi00ZTM4YTcwM2MwODkiLCJpZENsaWVudGUiOiJkZW1vcyJ3
元素在更深层次,你不感兴趣,我也不知道任何其他解决方案,而不是@ hjpotter92已经提供的解决方案。