2010-11-30 43 views
1

我在新的rails应用程序中使用了内置的RSS(RSS :: Parser.parse)RSS功能。该应用程序会读取我控制范围之外的多个不同来源的rss提要(面向公众,由其他人创建)。我试图访问的其中一个供稿包含项目集合中其描述字段中未转义的html。我可以访问该提要,但是当我尝试访问我的视图中的说明字段时,它看起来好像没有任何内容。我起初以为我需要使用原辅助工具,但最终的结果是一样的。有什么特殊的方式需要请求数据或在视图中访问它?在我的控制器中的代码如下:无法在RSS订阅源中访问未转义的html

@recent_activity = RSS::Parser.parse(open('http://someurl').read, false) 

在我看来,代码如下

<% @recent_activity.items.each do |itm| %> 
    <%= raw itm.description %> 
<% end %> 

我知道我可以利用原始的XML功能,可能使这项工作,并绕过RSS对象,但我试图在走这条路线之前看看我能用RSS对象做些什么。

在此先感谢您的任何帮助或建议。

回答

1

根据经验,我发现真实世界的提要通常比RSS :: Parser可以处理的更复杂。它已经有一段时间,我不得不做饲料什么,但这些浮现在脑海中:

feedtools

feedparser

你会发现最大的问题是没有包将正确地做到这一切,因为创造饲料的人是非常有创造力的。你会发现各种各样的魔鬼文本,HTML,并且在描述和标题字段中没有编码和编码。我最终编写了我自己的解析器,并使用Nokogiri来解决繁重的问题,并从loofah的一些帮助中去除了特定的不需要的标签。我以不同的时间间隔解析了近1000种不同的数据源,使用备份数据库来追踪最后的访问,etags并且做所有正义的事情,比如如果没有新的东西要说,就不要挨打死亡的网站,并且尊重他们的“不要在这几个小时或几天之间打扰我“设置。

1

而不是RSS::Parser尝试完全真棒feedzirra。我在一个应用程序中使用它,这个应用程序可以抽取大约200种不同的Feed,而不会有任何问题哦,它使用了Nokogiri,所以速度也很快。

FeedZirra描述:一个处理互联网像哥斯拉对待日本的饲料提取和解析库:它支配和吃掉所有。