2010-11-30 46 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描述:一個處理互聯網像哥斯拉對待日本的飼料提取和解析庫:它支配和吃掉所有。