我想通过Nokogiri宝石来缩短实际开始时间。
<dl class="dates">
<dt>Actual Start Date & Time:</dt>
<dd class="date " >
<span data-name="Actual Start Date & 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规则吗?
答案 0 :(得分:1)
我会这样做:
require 'nokogiri'
xml = <<_
<dl class="dates">
<dt>
Actual Start Date & Time:
</dt>
<dd class="date " >
<span data-name="Actual Start Date & 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"