使用feedparser检查RSS内容以获取新内容

时间:2011-12-19 20:22:22

标签: python rss feedparser

我正在使用python构建一个应用程序,其功能与RSS聚合器类似。我正在使用feedparser库来执行此操作。但是,我很难让程序正确检测是否有新内容。

我主要关注与新闻相关的供稿。除了查看是否已将新项添加到Feed之外,我还希望能够检测先前的文章是否已更新。有没有人知道如何使用feedparser来做到这一点,记住唯一必须的项目元素是标题或描述?我愿意假设link元素也会一直存在。

与每个项目关联的Feedparser的“id”属性似乎只是文章的链接,因此这可能有助于检测Feed上的新文章,但不会检测以前文章的更新,因为这些文章的“id”不会已经改变了。

我查看了stackoverflow上的先前线程,有些人建议散列内容或散列标题+ url,但我不确定这意味着什么或者如何实现(如果确实是正确的方法) )。

1 个答案:

答案 0 :(得分:4)

在此上下文中散列意味着计算较短的值来表示url和title的每个组合。当您使用散列函数确保碰撞的几率(两个不同的项生成相同的值)很低时,此方法有效。

传统上,MD5对此来说是一个很好的功能(但要注意不要将它用于加密操作 - 为此目的不推荐使用它。)

例如。

>>> import hashlib
>>> url = "http://www.example.com/article/001"
>>> title = "The Article's Title"
>>> id = hashlib.md5(url + title).hexdigest()
>>> print id
785cbba05a2929a9f76a06d834140439
>>> 

这将提供一个ID,如果URL或标题发生变化,它将发生变化 - 表明它是一篇新文章。

如果您还想检测对文章内容的修改,可以下载文章内容并将其添加到哈希值。

请注意,如果您打算将整个页面拉下来,您可能需要了解HTTP conditional GET with Python以节省带宽,并且对您正在访问的网站更加友好。