2009-09-30 20 views
0

在Universal Feed Parser中使用單源供稿解析,但現在我需要通過它運行多個供稿,並生成按時間順序交織的輸出(而不是RSS)。好像我需要遍歷URL並將每個條目填充到字典列表中,然後按照條目時間戳排序並從頂部切片。這似乎是可行的,但資源相當昂貴(我會積極緩存,因爲這個原因)。使用Universal Feed Parser彙總多個供稿

想知道是否有更簡單的方法 - 例如,與feedparser一起工作的現有庫進行簡單聚合。示例代碼?陷阱或警告?謝謝。

回答

2

您可以將提要投入數據庫,然後從該數據庫生成新的提要。

考慮查看兩個基於feedparser的RSS聚合器:Planet Feed AggregatorFeedJack(基於Django),或者至少他們如何解決這個問題。

+0

我實際上已經看過Planet和FeedJack,但問題是我已經有rss_url字段的模型需要與之合作,而這兩個假設他們是整個網站的基礎(即他們'不是非常可插拔的)。 相反,我使用了djangoproject.com網站本身使用的聚合器:http://code.djangoproject.com/browser/djangoproject.com/django_website/apps/aggregator,它附帶了feedparser的feed_updater.py包裝器。這樣可以很好地解決問題,還可以讓我對特定類別的網站進行ORM查詢等。 – shacker

+0

我想知道讓FeedJack更易於插拔是多麼困難? –

+0

據說feedjack可以讓你查看/下載歷史饋送。我下載了feedjack並通過源代碼(當我將它插入到我的項目後,我沒有得到它的工作)但是我沒有找到一個地方可以查看舊的feed是否被檢出。你能告訴我我缺少的東西嗎? –

1

這裏已經建議將數據存儲在數據庫中,例如, bsddb.btopen()或任何RDBMS。

看看heapq.merge()bisect.insort()或者如果你想合併內存中的數據,可以使用B樹實現之一。

+0

這是個好建議。以下是一些鏈接http://www.doughellmann.com/PyMOTW/heapq/index.html#module-heapq和http://www.doughellmann.com/PyMOTW/bisect/index.html#module-bisect –