Использование Nokogiri для очистки данных. - PullRequest
0 голосов
/ 28 марта 2019

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

<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

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

1 Ответ

0 голосов
/ 29 марта 2019

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...