我有一张看起来像这样的表
<table cellpadding="1" cellspacing="0" width="100%" border="0">
<tr>
<td colspan="9" class="csoGreen"><b class="white">Bill Statement Detail</b></td>
</tr>
<tr style="background-color: #D8E4F6;vertical-align: top;">
<td nowrap="nowrap"><b>Bill Date</b></td>
<td nowrap="nowrap"><b>Bill Amount</b></td>
<td nowrap="nowrap"><b>Bill Due Date</b></td>
<td nowrap="nowrap"><b>Bill (PDF)</b></td>
</tr>
</table>
我正在尝试创建XPATH以查找此表,其中包含测试Bill Statement Detail。我想要整个表而不仅仅是td。
这是我到目前为止所尝试的内容:
page.parser.xpath( '//表[含有(文本(), “比尔”)]')
page.parser.xpath('// table / tbody / tr [contains(text(),“Bill Statement Detail”)]')
感谢任何帮助
谢谢!
答案 0 :(得分:1)
您的第一个XPath示例是您选择table
时最接近的示例。第二个示例,如果它匹配,将选择tr
- 这个将不起作用主要是因为,根据您的示例,您想要的文本位于b
节点,而不是{{1} } node。
由于tr
,此解决方案尽可能模糊。如果目标文字始终位于*
下,请将其更改为b
:
descendant::b
这是具体的,举个例子,我可以做:
//table[contains(descendant::*, 'Bill Statement Detail')]
答案 1 :(得分:0)
你可能想要
// table [contains(descendant :: text(),“Bill Statement Detail”)]
答案 2 :(得分:0)
如果匹配字不在第一行,建议的代码不能正常工作。请参阅相关帖子Find a table containing specific text