如何从雅虎财经页面获取RSS源并在我的Rails应用程序中显示?

时间:2013-03-17 19:07:31

标签: ruby-on-rails ruby-on-rails-3 rss yahoo-finance

过去6个月我一直在使用Ruby和Rails进行编程,现在我对它非常熟悉。但是,我之前从未使用我的Rails应用程序处理RSS提要。对于我目前的项目,我有一个显示页面,显示不同的市场指数及其开,高,低,交易量值。现在,我想带来来自雅虎财经的RSS提要,并希望在同一页面中显示它们。我想从此链接http://finance.yahoo.com/rssindex获取RSS源,然后我想在我的Rails应用程序的显示页面中显示它们。在搜索此问题的解决方案时,我遇到了这个问题:Generating RSS feed in Rails 3

但是,我认为这是为一个应用程序生成RSS源。我相信我的需要与此不同。我想获取RSS源并在我的显示页面中显示它们。为了获取RSS提要,我发现了一种叫做feedzirra的红宝石,看起来很棒。但是,我仍然对如何使用我的Rails应用程序实际显示新闻源感到困惑?我的意思是,我需要为此创建任何模型,视图和控制器吗?我是否需要在我的数据库中保存新闻源以便在我的显示页面中显示它们?或者,有没有什么方法可以使用feedzirra获取并在我的显示页面中显示它们?我只是不确定如何从这个位置前进。解决这个问题的最佳Rails方法是什么?

1 个答案:

答案 0 :(得分:1)

Ryan Bates在一种处理问题的方法上有一个railscast: http://railscasts.com/episodes/168-feed-parsing

你肯定应该有这个数据的模型。目标应该是让模型处理数据的获取和解析。

如果您对将信息保存到自己的数据库不感兴趣(如railscast剧集中所示),请注意,在每次加载页面时向yahoo发出请求会产生一些性能损失。

以下是您可以添加到模型中的方法的简单示例。

def self.lookup_stock_titles(stock_name)
  titles = Array.new
  Feedzirra::Feed.fetch_and_parse("http://feeds.finance.yahoo.com/rss/2.0/headline?s=#{stock_name}&region=US&lang=en-US").entries.each do |entry|
     titles << entry.title
  end
  return titles
end

这将为您提供rss Feed中的一系列标题,您可以根据需要将其集成到控制器或视图中。

<% ModelName.lookup_stock_titles("ABC").each do |title| %>
  <h2><%= title %></h2>
<% end %>

还要确保雅虎允许您按照自己的方式使用他们的数据,将其保存到数据库,每小时的请求数量,您需要给他们的信用等等。