13

我正在使用 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

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

4

2 回答 2

17

每个提要项都有一个标识符,在item.id. 跟踪这些以及他们的.updated(或.updated_parsed)条目,以检查新项目。

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

请确保您利用 feedparser E-Tag 支持来检查已更改的提要内容。这只会使您免于下载没有新项目的提要;当您获得新的提要副本时,您仍然需要检测已添加或更新的项目。

于 2013-01-10T11:25:26.400 回答
1

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

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

于 2013-01-10T11:25:54.580 回答