使用Nokogiri从HTML表中删除节点



这个问题我已经挠头有一段时间了。在我开始胡思乱想之前帮帮我。

我有一个html文档,有一个事件表,其中有'In'和'Out'作为列的一部分。记录可以是In事件,也可以是Out事件。我不想只得到"in"列中的值行,然后将文本保存在具有相同属性的事件模型中。下面的代码是返回'0'的代码。

#!/usr/bin/env ruby
require 'rubygems'
require 'nokogiri'

doc = Nokogiri::HTML <<-EOS
  <table><thead><th>Reference</th><th>Event Date</th><th>Event Details</th><th>In</th><th>Out</th></thead><tbody><tr><td>BCE16</td><td>2011-08-16 11:14:52</td><td>Received from Arap Moi</td><td>30.00</td><td></td></tr><tr><td>B07K2</td><td>2011-08-16 11:10:06</td><td>Sent out to John Doe.</td><td>&nbsp;</td><td>-50.00</td></tr></tbody><tfoot></tfoot></table>
EOS

minus_received = doc.xpath('//td[contains(text(), "Received from")]').each do |node| 
  node.parent.remove
end
p minus_received.to_s

人类可读标记

<table>
  <thead>
    <th>Reference</th>
    <th>Event Date</th>
    <th>Event Details</th>
    <th>In</th>
    <th>Out</th>
  </thead>
  <tbody>
  <tr>
    <td>BCE16</td>
    <td>2011-08-16 11:14:52</td>
    <td>Received from Arap Moi.</td>
    <td>30.00</td>
    <td></td>
  </tr>
  <tr>
    <td>B07K2</td>
    <td>2011-08-16 11:10:06</td>
    <td>Sent out to John Doe.</td>
    <td>&nbsp;</td>
    <td>-50.00</td>
  </tr>
  </tbody>
  <tfoot></tfoot>
</table>

感谢你的帮助。

您正在输出。each的值-如果您在每次调用结束后查看doc,则html仅包含标题和John Doe。

相关内容

  • 没有找到相关文章

最新更新