2011-08-16 57 views
0

我一直在摸索着這一段時間。在我開始採摘我的大腦之前幫助我。使用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> 

我感謝你的幫助。

回答

1

您正在輸出.each的值 - 如果您在每次調用完成後查看doc,則html只包含標頭和John Doe。

+0

感謝布里格斯指出。那個小男孩真的搞砸了我的大腦。 –