0

Ruby のパーサーで nytimes の 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"/>

ワシントン・ポストのフィードでも同様の状況があります。画像を実際に表示するには、または少なくとも説明部分だけを取得するにはどうすればよいですか。これを正規表現で処理する必要がありますか、それともパーサー オブジェクトに使用すべきメソッドがありますか?

4

1 に答える 1

0

XML や RSS (または HTML) を正規表現だけで解析するのはあまり良い考えではありません。タグのネストの可能性をすべて予測するのは簡単ではないからです。

通常、XML Gem / ライブラリを使用して RSS または XML データ ( libxml 、 Nokogiri、Ox など) を解析しますが、XML フィードが非常に大きい場合、大量のメモリを消費します。

Ox または Nokogiri を試して、正規表現よりもうまく機能するかどうかを確認してください。

フィードが非常に大きく、その中に多くの記事がある場合は、正規表現を使用してアイテム/記事を切り取り、Ox または Nokogiri を使用してコンテンツを個別に解析することができます (これは、並列処理のための Resque ジョブ)。

于 2013-04-16T22:03:30.660 に答える