ruby - 查找包含特定文本的表格

标签 ruby xpath nokogiri

我有一张 table :

 html ='
 <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 matching text in a table - Ruby - Nokigiri)。如果我使用第一行中的任何单词作为匹配词,例如“语句”,它就可以正常工作。但是,如果我使用另一行中的单词,例如“金额”,它就不起作用。
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

关于ruby - 查找包含特定文本的表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24301569/

相关文章:

ruby - 除第一个字符外的小写单词

ruby - 循环遍历数组的元素

java - 在 Java 中使用 XPath 获取当前节点值

java - XSD "property already defined"

ruby - 如何在 Mac OS Sierra 10.12 上安装 Nokogiri

xpath - 可以使用 xpath 选择多个选项吗?

mysql - 在 Rails 中比较 mysql 条目的简单方法

ruby-on-rails - 为什么 rails 在设置后更改属性 _was 值的类型?

php - 用于选择不包含特定父元素的所有元素的 XPATH 表达式

ruby-on-rails - 未定义的方法 `click' 用于 "2":String, 使用 Mechanize 时出现 Rails 错误