Использование Nokogiri для очистки данных itemprop

#ruby

#ruby

Вопрос:

У меня есть div, который выглядит следующим образом, и я пытаюсь очистить данные itemprop datetime, но, похоже, у меня не получается заставить его работать.

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

Приведенный ниже скрипт отлично выводит текст для даты (т. е. . Четверг, 28 марта 2019 года), но селектор времени выдает эту ошибку.

 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
  

Моя цель — извлечь часть datetime из div, чтобы я мог отформатировать ее как время (например, 8: 00 вечера)

Ответ №1:

Строка item.at_css("a > div > time") возвращает элемент time .

a > div > time это вложенный путь для получения этого элемента. Теперь вы хотите получить time атрибут, а не html-элемент, поэтому path a datetime ничего не вернет (потому что у нас нет элемента datetime).

Вы можете получить дату, используя:

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

Надеюсь, это поможет: D

Комментарии:

1. Большое вам спасибо !