2012-09-02 149 views
0

我想用Ruby解析器解析nytimes rss提要。用Ruby解析器解析rss描述

nyt_url = 'http://www.nytimes.com/services/xml/rss/nyt/World.xml' 
open(nyt_url) do |rss| 
    @nyt_feed = RSS::Parser.parse(rss) 
end 

并在视图文件:

<h2>New York Times Feed</h2> 
<% @nyt_feed.items.each do |item| %> 
    <p> 
    <%= link_to item.title, item.link %> 
    <%= item.description %> 
    </p> 
<% end %> 

但我到外面的描述看起来是这样的:

Since air assaults by the Assad government picked up two weeks ago, 
knocking rebels in the south on their heels, Syrians have been arriving 
at refuge camps in Jordan at a rate of about 2,000 a night.<img width='1' height='1' 
src='http://rss.nytimes.com/c/34625/f/642565/s/22f90a36/mf.gif' border='0'/><br/><br/><a 
href="http://da.feedsportal.com/r/139263791500/u/0/f/642565/c/34625/s/22f90a36/a2.htm"><img 
src="http://da.feedsportal.com/r/139263791500/u/0/f/642565/c/34625/s/22f90a36/a2.img" 
border="0"/></a><img width="1" height="1" 
src="http://pi.feedsportal.com/r/139263791500/u/0/f/642565/c/34625/s/22f90a36/a2t.img" 
border="0"/> 

我也有华盛顿邮报类似的情况饲料。我如何获取图像以实际显示,或者至少只获取描述部分。我是否必须使用正则表达式来处理这个问题,或者我应该使用解析器对象上的某种方法?

回答

0

使用正则表达式解析XML或RSS(或HTML)不是一个好主意,因为预测所有可能的标签嵌套并不那么容易。

通常你想使用XML宝石/库来解析你的RSS或XML数据(如的libxml,引入nokogiri,牛),但是当XML饲料是真正的大,它吃了大量的内存

尝试牛或Nokogiri,看看它是否比正则表达式更适合你。

如果您的Feed非常大,并且其中有许多文章,您可以尝试用正则表达式剪切这些项目/文章,然后分别用Ox或Nokogiri解析它们的内容(这也适用于在并行处理的Resque作业中完成时很好)。