2010-03-18 6 views
5

Ich habe einige Probleme beim Versuch, den Code unten zu erhalten, um die Daten in dem Format auszugeben, das ich möchte. Was ich nach ist die folgende:RUBY Nokogiri CSS HTML Parsing

CCC1- $ 5.00
CCC1- $ 10.00
CCC1- $ 15.00
CCC2- $ 7,00

wo $ 7 gehört zu CCC2 und die anderen zu CCC 1, aber ich kann nur verwalten die Daten in diesem Format zu erhalten:

CCC1- $ 5.00
CCC1- $ 10.00
CCC1- $ 15.00
CCC1- 7,00 $
CCC2- $ 5.00
CCC2- $ 10.00
CCC2- $ 15.00
CCC2- 7,00 $ würde

Jede mögliche Hilfe geschätzt.

require 'rubygems' 
require 'nokogiri' 
require 'open-uri' 

doc = Nokogiri::HTML.parse(<<-eohtml) 
<div class="AAA"> 
    <table cellspacing="0" cellpadding="0" border="0" summary="sum"> 
     <tbody> 
      <tr> 
       <td class="BBB"> 
        <span class="CCC">CCC1</span> 
       </td> 
       <td class="DDD"> 
        <table cellspacing="0" cellpadding="0" border="0"> 
         <tbody> 
          <tr><td class="FFF">$5.00</td></tr> 
          <tr><td class="FFF">$10.00</td></tr> 
          <tr><td class="FFF">$15.00</td></tr> 
         </tbody> 
        </table> 
       </td> 
      </tr> 
     </tbody> 
    </table> 
    <table cellspacing="0" cellpadding="0" border="0" summary="sum"> 
     <tbody> 
      <tr> 
       <td class="BBB"> 
        <span class="CCC">CCC2</span> 
       </td> 
       <td class="DDD"> 
        <table cellspacing="0" cellpadding="0" border="0"> 
         <tbody> 
          <tr><td class="FFF">$7.00</td></tr> 
         </tbody> 
        </table> 
       </td> 
      </tr> 
     </tbody> 
    </table> 
</div> 
eohtml 

doc.css('td.BBB > span.CCC').each do |something| 
    doc.css('tr > td.EEE, tr > td.FFF').each do |something_more| 
     puts something.content + '-'+ something_more.content 
    end 
end 

Antwort

4

Wie wäre es damit?

doc.css('td.BBB > span.CCC').each do |something| 
    something.parent.parent.css('tr > td.EEE, tr > td.FFF').each do |something_more| 
     puts something.content + '-'+ something_more.content 
    end 
end 
+0

kool, was gut funktioniert. danke eine million :) – user296507

+0

Können Sie die Bedeutung von ''td.BBB> span.CCC'' sagen? Wo ist die Dokumentation? –

+0

'>' in CSS-Syntax wird @ http://stackoverflow.com/questions/4459821/css-selector-what-is-it erläutert – vaichidrewar