使用Python合并多个RSS源的最佳算法
我正在写一个Python脚本,目的是把20多个RSS源合并在一起。我想用自己的方法,而不是使用feedjack或planetfeed。
我使用feedparser来解析这些源,并用mysql来缓存它们。
我遇到的问题是,如何判断哪些源已经被缓存,哪些还没有。
这是我尝试过的一些伪代码:
- 创建一个所有源项目的列表
- 从数据库中获取最后一个缓存项目的日期
- 检查我的列表中哪些项目的日期比数据库中的日期要晚,并返回这个过滤后的列表
- 按项目创建的日期对返回的过滤列表进行排序
- 把新项目添加到数据库中
我觉得这样做是可行的,但我的问题是,并不是所有我使用的RSS源的日期都是正确的。有时候,发布者出于某种原因,会有未来日期的源项目。如果这个未来的日期被添加到数据库中,那么它就会一直比我列表中的项目日期要晚。这样一来,比较就失效了,新的项目就无法添加到数据库中。我想找一个其他的解决方案,而不是依赖发布者的日期。
你们这些专业人士会怎么做呢?假设你需要合并多个RSS源,把它们保存到mysql数据库中,然后按日期返回。我只是想要一些伪代码,给我一个最佳方法的思路。
谢谢你的帮助。
1 个回答
1
根据信息更新的频率和你检查的频率,你可以在把数据放进数据库之前,简单地修复那些错误的日期(如果日期是未来的,就把它改成今天)。
除此之外,你还需要使用某种ID——我记得RSS每个项目都有一个ID字段。如果你的信息是按顺序保存的,你可以找到最新的缓存ID,在信息列表中找到它,然后把所有更新的内容添加进来。如果信息是乱序的,你就得一个一个地检查,看看缓存里有没有,如果没有就添加进去。