2009-04-18 6 views
3

Je suis en suivant les instructions sur http://www.rubyrss.com/ pour analyser un flux de craigslist.org:obtenir la date à partir d'un flux RSS en Ruby

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

Tout semble fonctionner très bien, mais quand je ne peux pas obtenir tout dates de l'objet analysé:

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 

Qu'est-ce que je fais mal ici?

+0

(Humour) Ce que vous tentez de faire, c'est d'obtenir une date à partir d'un flux RSS. Aller dans un bar, c'est beaucoup plus facile d'y trouver des femmes. –

Répondre

2

Jetez un coup d'œil sur le flux RSS en utilisant Firefox afin de voir facilement la structure du flux. Les éléments de date sont représentés à l'aide "Dublin Core" <dc:date>

Essayez ceci:

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

Plus de détails sur le Ruby rss parser reference et Dublin Core.

+0

Cool! Je vois d'autres tags qui ressemblent à aussi. Je ne suis pas très bon avec xml, donc je me souviens juste que le "dc" est un espace de nom de balise (du moins je pense que c'est ce qu'on appelle), et le haut du document contient des références où je peux en savoir plus. leur. – allyourcode

4

Vous devriez vraiment changer de bibliothèque. Je recommande d'utiliser Feedzirra. C'est beaucoup plus rapide, et c'est activement maintenu.

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 
+0

Merci sporkmonger! Je vais certainement jeter un coup d'oeil. – allyourcode