Получить дату из RSS-канала в Ruby - PullRequest
3 голосов
/ 18 апреля 2009

Я следую инструкциям на http://www.rubyrss.com/, чтобы разобрать канал с craigslist.org:

http://seattle.craigslist.org/sof/index.rss

Кажется, все работает нормально, но когда я не могу получить какие-либо даты из проанализированного объекта:

irb(main):010:0> rss.date
NoMethodError: undefined method `date' for #<RSS::RDF:0x2c412b8>
        from (irb):10
irb(main):011:0> rss.channel.date
NoMethodError: undefined method `date' for #<RSS::RDF::Channel:0x2c406ec>
        from (irb):11
        from :0
irb(main):012:0> rss.items[0].date
NoMethodError: undefined method `date' for #<RSS::RDF::Item:0x2cdc290>
        from (irb):12
        from :0
irb(main):013:0> rss.items[1].date
NoMethodError: undefined method `date' for #<RSS::RDF::Item:0x2cd04a4>
        from (irb):13
        from :0

Что я здесь не так делаю?

Ответы [ 2 ]

4 голосов
/ 24 апреля 2009

Вы действительно должны переключать библиотеки. Я бы порекомендовал использовать Feedzirra . Это намного, намного быстрее и активно поддерживается.

require "feedzirra"
feed = Feedzirra::Feed.fetch_and_parse("http://seattle.craigslist.org/sof/index.rss")
feed.entries.first.published
# => Fri Apr 24 18:27:28 UTC 2009
2 голосов
/ 18 апреля 2009

Посмотрите на RSS-канал с помощью Firefox, чтобы вы могли легко увидеть структуру канала. Элементы даты представлены с использованием «Dublin Core» <dc:date>

Попробуйте это:

require 'rss/dublincore'
rss.items[3].dc_date  #=>  Sat Apr 18 01:02:11 -0400 2009

Подробнее на Справочник по Ruby rss и Dublin Core .

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