如何从此源代码中抓取实际开始时间字段



我想通过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 规则来抓取吗?

我会做的:

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/选择器以了解 CSS 规则。

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"

相关内容

  • 没有找到相关文章

最新更新