#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. Большое вам спасибо !