2010-03-18 5 views
5

У меня возникли проблемы с получением кода ниже для вывода данных в том формате, который я хочу. То, что я после того, как следующий:RUBY Nokogiri CSS HTML Parsing

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

где $ 7 принадлежит CCC2 и другим CCC1, но я могу только управлять, чтобы получить данные в этом формате:

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

Любая помощь будет оценена.

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 

ответ

4

Как насчет этого?

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, что отлично работает. спасибо миллион :) – user296507

+0

Не могли бы вы сказать значение '' td.BBB> span.CCC''? где находится документация? –

+0

'>' в синтаксисе css объясняется @ http://stackoverflow.com/questions/4459821/css-selector-what-is-it – vaichidrewar

Смежные вопросы