Python 使用feedparser检查RSS源中的新内容

Python 使用feedparser检查RSS源中的新内容,python,rss,feedparser,Python,Rss,Feedparser,我正在使用python构建一个应用程序,其功能类似于RSS聚合器。我正在使用feedparser库来实现这一点。然而,我正在努力让程序正确检测是否有新内容 我主要关注与新闻相关的提要。除了查看是否向提要中添加了新项目外,我还希望能够检测以前的文章是否已更新。有人知道我如何使用feedparser来实现这一点吗?记住,唯一的强制项元素是title或description?我愿意假设link元素也将始终存在 Feedparser与每个项目关联的“id”属性似乎只是指向文章的链接,因此这可能有助于检测

我正在使用python构建一个应用程序,其功能类似于RSS聚合器。我正在使用feedparser库来实现这一点。然而,我正在努力让程序正确检测是否有新内容

我主要关注与新闻相关的提要。除了查看是否向提要中添加了新项目外,我还希望能够检测以前的文章是否已更新。有人知道我如何使用feedparser来实现这一点吗?记住,唯一的强制项元素是title或description?我愿意假设link元素也将始终存在

Feedparser与每个项目关联的“id”属性似乎只是指向文章的链接,因此这可能有助于检测提要上的新文章,但无法检测对以前文章的更新,因为这些文章的“id”不会更改


我已经看过了stackoverflow之前的文章,有些人建议对内容或标题+url进行散列,但我不确定这意味着什么,也不确定如何进行(如果确实是正确的方法)。

在这种情况下,散列意味着计算一个较短的值来表示url和标题的每个组合。当您使用哈希函数来确保冲突(两个不同的项生成相同的值)的几率较低时,这种方法就有效了

传统上,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或标题发生变化,该id将发生变化,这表明它是一篇新文章

如果还希望检测对文章内容的编辑,可以下载文章内容并将其添加到哈希中


请注意,如果您确实打算将整个页面向下拉,您可能希望了解
HTTP条件获取与Python的关系
,以节省带宽并对您访问的站点更友好一些。

非常好。谢谢你。我现在遇到的问题是,每次阅读相同的内容时,我都会得到不同的哈希值。我得到如下内容:
content=urllib.urlopen(items[0][“link”]).read()
,然后计算哈希值。如果我使用上述方法第二次读取相同的内容,我这次将得到一个不同的哈希值,因为内容应该是相同的,所以不应该出现这种情况。有没有关于如何防止这种情况的线索?可能有很多原因导致整个网页在不同的负载下会有所不同。例如,边栏中可能包含定期更新的新文章列表。它归结为“内容”的定义。您需要深入到页面的HTML,找到文章本身的正文,并将其用作您的内容。