我有一个类似于以下内容的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)
答案 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