如何检查RSS源是否已在Python中更新?

时间:2013-01-10 11:20:11

标签: python rss feedparser

我正在使用Python中的feedparser库来从RSS提要中获取各种详细信息。假设我从新闻频道的RSS提要中删除了25个标题。一小时后,我再次运行feedparser命令,以获取25个新标题的最新标题列表。第二次运行feedparser命令时,列表可能会更新,也可能不会更新。有些标题可能是相同的,有些可能是新的。我需要能够检查任何新闻标题中是否有更新,其标题是在一小时前提取出来的。只有新的标题必须推入数据库。这是为了避免重复转储到数据库中。

代码如下所示:

import feedparser
d = feedparser.parse('www.news.example.xml')
for item in d.entries:
    hndlr.write(item.title)  #data being dumped into a database

我需要每小时运行上面的代码并检查标题中是否有任何更新(标题)。如果前一小时提取的数据有任何变化,则只应将新数据转储到数据库中。

有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:15)

每个Feed项都有item.id中的标识符。跟踪这些内容及其.updated(或.updated_parsed)条目,以检查新项目。

因此,看看您是否已经看过该项目(通过item.id),或者自上次检查后是否已更新(通过item.updateditem.updated_parsed)。

请确保您利用Feedparser E-Tag support来检查更改的Feed内容。这样只会让您免于下载没有新商品的Feed;当您获得最新的Feed副本时,仍然需要检测已添加或更新的项目。

答案 1 :(得分:1)

对于“好”的Feed你可以使用ETag和last-modfied-since机制,它在这里描述http://www.kbcafe.com/rss/rssfeedstate.html

但是有些服务器不支持它,所以你只需要检查发布日期和ID,看看你的数据库中是否有这样的帖子。