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


我在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

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

有人可以帮帮我吗?


7021
2018-01-10 11:20


起源



答案:


每个Feed项都有一个标识符 item.id。跟踪那些,以及他们的 .updated (要么 .updated_parsed)进入,检查新项目。

所以,看看你是否已经看过这个项目(通过 item.id)或者自上次检查后更新(通过 item.updated 要么 item.updated_parsed)。

确保您充分利用了feedparser 电子标签支持 检查更改的饲料内容。这样,您只会免于下载没有新项目的Feed;当您获得新的Feed副本时,仍需要检测已添加或更新的项目。


13
2018-01-10 11:25





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

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


1
2018-01-10 11:25