查找包含特定文本的表

我有一张桌子:

html =' 
Bill Statement Detail
Bill Date Bill Amount Bill Due Date Bill (PDF)
'

我使用这篇文章中建议的代码( 表中的XPath匹配文本 – Ruby – Nokigiri )。 如果我使用第一行中的任何单词作为匹配单词,例如“Statement”,它就可以正常工作。 但是如果我使用另一行中的单词,例如“Amount”,它就不起作用。

 doc = Nokogiri::HTML("#{html}") doc.xpath('//table[contains(descendant::*, "Statement")]').each do |node| puts node.text end 

contains()函数需要一个奇异值作为其第一个参数。 descendant::*可能会产生多个元素,然后导致函数意外运行,例如只考虑产生的第一个元素。

尝试将您的XPath更改为:

 doc.xpath('//table[descendant::*[contains(., "Amount")]]').each do |node| puts node.text end