2010-03-18 11 views
5

Tengo algunos problemas al intentar obtener el siguiente código para generar los datos en el formato que deseo. Lo que busco es la siguiente:RUBY Nokogiri CSS Análisis de HTML

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

donde $ 7 pertenece a CCC2 y los otros para CCC1, pero sólo puedo manejar para obtener los datos en este formato:

CCC1- $ 5.00
CCC1- $ 10.00
CCC1- $ 15,00
CCC1- $ 7,00
CCC2- $ 5,00
CCC2- $ 10,00
CCC2- $ 15,00
CCC2- $ 7,00

Cualquier ayuda sería apreciada.

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 

Respuesta

4

¿Qué le parece esto?

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, qué funciona genial. gracias un millón :) – user296507

+0

¿Podría decirnos el significado de ''td.BBB> span.CCC''? ¿Dónde está la documentación? –

+0

'>' en la sintaxis de css se explica @ http://stackoverflow.com/questions/4459821/css-selector-what-is-it – vaichidrewar

Cuestiones relacionadas