2016-09-01 4 views
-2

私はforexfactoryカレンダーを抽出しています。私は値のputsを行うことができますが、それは完全なHTMLタグを印刷しています。クラス「calendar__time」を持つタグの値をtdにするにはどうすればよいですか?ノコギリでTD値を抽出するには?

私のコードは次のとおりです。

require 'HTTParty' 
require 'Nokogiri' 
require 'Pry' 
require 'csv' 

page = HTTParty.get('http://www.forexfactory.com/calendar.php?day=aug31.2016') 
p= Nokogiri::HTML(page) 
rows=p.css('tr.calendar_row') 
rows.map do |row| 

    puts row.css('td.calendar__date') 
    puts row.css('td.calendar__time') 
end 

私はIRBに確認すると、それはタグでそれを返しています:このTRのための

 <td class="calendar__cell calendar__time time">9:45pm</td><a href="javascript:void(0);" class="calendarexpanded__graph" data-touchable><span>Graph</span></a> </td> 
      </tr> 
     </tbody> 
     </table> 
    </td> 
</tr> 
    <td class="calendar__cell calendar__date date"></td> 

HTMLスニペットは次のとおりです。

<tr class="calendar__row calendar_row calendar__row--grey " data-eventid="62529" data-touchable> 
    <td class="calendar__cell calendar__date date"></td> 
    <td class="calendar__cell calendar__time time">2:00am</td> 
    <td class="calendar__cell calendar__currency currency">CHF</td> 
    <td class="calendar__cell calendar__impact impact calendar__impact calendar__impact--low"> 
     <div class="calendar__impact-icon calendar__impact-icon--screen"> <span title="Low Impact Expected" class="low"></span> </div> 
     <div class="calendar__impact-icon calendar__impact-icon--print"> <img src="resources/images/icons/impact/impact-yellow.png" alt="" border="0" /> </div> 
    </td> 
    <td class="calendar__cell calendar__event event"> 
     <div> <span class="calendar__event-title">UBS Consumption Indicator</span> </div> 
    </td> 
    <td class="calendar__cell calendar__detail detail"><a class="calendar__detail-link calendar__detail-link--level-1 calendar_detail level1" data-level="1"></a></td> 
    <td class="calendar__cell calendar__actual actual">1.32</td> 
    <td class="calendar__cell calendar__forecast forecast"></td> 
    <td class="calendar__cell calendar__previous previous"><span class="revised worse" title="Revised From 1.34">1.21</span></td> 
    <td class="calendar__cell calendar__graph graph"><a class="calendar__detail-link calendar__detail-link--graph-icon calendar_chart"></a></td> 
</tr> 
<tr class="calendar__row calendar__expand " data-eventid="62529"> 
    <td>&nbsp;</td> 
    <td colspan="4" class="calendarexpanded__container"> 
     <table class="calendarexpanded"> 
     <tbody> 
      <tr> 
       <td class="calendarexpanded__cell"><strong>Actual</strong>1.32</td> 
       <td class="calendarexpanded__cell"><strong>Forecast</strong>&nbsp;</td> 
       <td class="calendarexpanded__cell"><strong>Previous</strong><span class="revised worse" title="Revised From 1.34">1.21</span></td> 
       <td class="calendarexpanded__cell calendarexpanded__cell--small"> <a href="javascript:void(0);" class="calendarexpanded__details calendarexpanded__details--1" data-touchable><span>Details</span></a> </td> 
       <td class="calendarexpanded__cell calendarexpanded__cell--small"> 
+0

「[mcve]」をお読みください。コードの問題について質問するときは、問題を再現するのに必要な最小限の入力データを提供することが重要です。あなたの入力HTMLは有効ではないので、Nokogiriは構文解析後にDOMを完全に変更することができ、セレクタが元の/構文的に正しいHTMLと比較して失敗したり失敗したりします。また、あなたがやっていることがブロック内で印刷されているときは、 'map'を使わないでください。代わりに 'each'を使うべきです。 –

答えて

0

私は次のように変更して動作させました:

puts row.css('td.calendar__date').text