如何检查Python是否已更新RSS feed?

问题描述 投票:13回答:2

我正在Python中使用feedparser库来从RSS feed获得各种详细信息。假设我从新闻频道的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

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

python rss feedparser
2个回答
15
投票

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

因此,请查看您是否已经查看过该项目(通过item.id),或者自上次检查以来是否已对其进行更新(通过item.updateditem.updated_parsed)。

尽管要确保您利用feedparser E-Tag support检查更改的feed内容。这只会使您免于下载没有新项目的提要;您仍需要在获取Feed的新副本时检测是否已添加或更新了商品。


1
投票

对于“好的”提要,您可以使用ETag和last-modfied-since机制,在此处进行了描述http://www.kbcafe.com/rss/rssfeedstate.html

但是某些服务器不支持它,因此您只需要检查发布日期和ID,看看您的数据库中是否有此类发布。

© www.soinside.com 2019 - 2024. All rights reserved.