如何从此源代码中抓取actualstarttime字段

时间:2014-02-20 19:38:37

标签: html ruby nokogiri

我想通过Nokogiri宝石来缩短实际开始时间。

<dl class="dates">
   <dt>Actual Start Date &amp; Time:</dt>
   <dd class="date " >
      <span data-name="Actual Start Date &amp; Time" id="customfield_10207-val"  data-fieldtype="datetime" >
      <span title="19/Feb/14 3:14 PM">
      <time datetime="2014-02-19T15:14+0000">19/Feb/14 3:14 PM</time>
      </span>
      </span>
   </dd>
</dl>

任何人都可以看看,让我知道我需要申请刮什么css规则吗?

2 个答案:

答案 0 :(得分:1)

我会这样做:

require 'nokogiri'

xml = <<_
<dl class="dates">
  <dt>
    Actual Start Date &amp; Time:
  </dt>
  <dd class="date " >

    <span data-name="Actual Start Date &amp; Time" id="customfield_10207-val"  data-fieldtype="datetime" >
      <span title="19/Feb/14 3:14 PM">
        <time datetime="2014-02-19T15:14+0000">
          19/Feb/14 3:14 PM
        </time>
      </span>
    </span>
  </dd>
</dl>
_

doc = Nokogiri::XML(xml)

现在,您可以使用两种不同的CSS规则来消磨时间。我使用at_css,因为我对第一个符合CSS规则的节点感兴趣。但是您的要求是收集多个与CSS规则匹配的节点,因此请使用方法css。它将为您提供Nodeset,它将包含与您的CSS规则匹配的所有节点。现在,您可以使用each方法迭代Nodeset集合中的每个节点。

date = doc.at_css('#customfield_10207-val > span')['title']
date # => "19/Feb/14 3:14 PM"
date = doc.at_css('#customfield_10207-val > span > time').text.strip
date # => "19/Feb/14 3:14 PM"

请浏览CSS3/Selectors以了解CSS规则。

答案 1 :(得分:0)

require 'nokogiri'
require 'open-uri'

source = open('http://www.example.com/time.html')
doc = Nokogiri::HTML(source) 
doc.css('dd.date time').first.content

=> "19/Feb/14 3:14 PM"