如果RSS源未更改,则不执行任何操作

时间:2011-02-07 18:08:00

标签: python

我想每隔几分钟运行一次Python脚本。该脚本首先从rss-feed(使用feedparser)获取最新文章。我想要的是,当最新的文章与上次运行时相同时,脚本就会结束。我该如何做到这一点?

3 个答案:

答案 0 :(得分:5)

既然您在python问题中提到了feedparser,我会假设您的意思是feedparser.org

如果是,那么最简单的方法是让服务器为您完成大部分工作,并且仅在您上次更改后请求更新:请参阅ETag and Last-Modified headers for RSS feeds

答案 1 :(得分:3)

您可以将状态存储在临时文件中。例如。如果没有临时文件,则将标题写入临时文件,下次从文件中读取并将读取的标题与新标题进行比较。

答案 2 :(得分:0)

您可以采取多种不同的方法。最简单的可能是保留为您的程序处理的每个Feed获取的最新文章的唯一键或哈希值。这可能是文章标题和文章的组合。日期,甚至是文章全部内容的md5sum。

然后,您可以将此数据写入脚本的XML状态文件,或使用cpickle之类的内容保存数据。然后,每次程序运行时,只检索最新的订阅源文章(根据上次运行中的最新文章哈希检查每个文章)。

当然,不要忘记在脚本退出之前更新最新的文章提要哈希值。

如果您的脚本处理多个Feed,则您必须为每个Feed存储其中一个“最新文章哈希”项目。