使用Nokogiri抓取itemprop数据

时间:2019-03-28 20:10:32

标签: ruby

我有一个类似于以下内容的div,并且我正在尝试抓取itemprop datetime数据,但似乎无法正常工作。

<time itemprop="startDate" datetime="2019-03-28T19:00:00">
  Thursday, March 28, 2019
</time>

下面的脚本将日期文本拉得很好(即..星期四,2019年3月28日),但是时间选择器会引发此错误。

undefined method `text' for nil:NilClass (NoMethodError)

我已经搜索了Stackoverflow,并试图映射时间数据,但是没有任何效果。

require 'rubygems'
require 'nokogiri'
require 'open-uri'

my_local_filename = "C:/data-hold-classes/Santa Fe College" + ".html"

data = Nokogiri::HTML(open(my_local_filename), "r")

classes = data.css(".col-xs-7")

classes.each do |item|

class  = item.at_css("a b").text.strip #=> All details
date = item.at_css("a > div > time").text.strip #==> Thursday, March 28, 2019

#time = item.at_css("a datetime").text.strip  #==> 


puts class
puts date
#puts time

puts " "
end

我的目标是提取div的datetime部分,以便将其格式化为时间(例如8:00 PM)

1 个答案:

答案 0 :(得分:0)

item.at_css("a > div > time")行返回一个元素time

a > div > time是获取该元素的嵌套路径。现在,您想要获取time,它是一个属性,而不是html元素,因此路径a datetime将不会返回任何内容(因为我们没有datetime元素)。

您可以通过以下方式获取日期:

item.at_css("a > div > time")["datetime"].strip

希望对您有帮助:D