如何获取 RSS 源上的所有旧项目?

我一直在尝试编写自己的 RSS 阅读器。我可以处理“解析 XML”部分。我一直纠结的问题是“我怎样才能拿到旧的帖子?”

大多数 RSS 提要只在 XML 文件中列出10-25个最新的条目。如何获取提要中的 全部项,而不仅仅是最新的项?

我能找到的唯一解决方案就是使用“非官方的”Google Reader API,它大概是这样的

Http://www.google.com/reader/atom/feed/http://fskrealityguide.blogspot.com/feeds/posts/default?n=1000

我不想让我的应用程序依赖于谷歌阅读器。

还有更好的办法吗?我注意到在 Blogger 上,我可以做什么”?Start-index = 1 & max-results = 1000“ ,在 WordPress 上我能做什么”?翻页 = 5”。有没有什么通用的方法可以获取 RSS 提要,这样它就可以提供给我所有的信息,而不仅仅是最新的条目?

75349 次浏览

根据我使用 RSS 的经验,提要是由最后的 X 项编译的,其中 X 是一个变量。某些提要可能有完整的列表,但是为了带宽起见,大多数地方可能仅限于最后几个项目。

对于拥有旧信息的谷歌阅读器来说,可能的答案是,它把旧信息储存在一边,以备用户以后使用。

RSS/Atom 提要不允许检索历史信息。如果 feed 的发布者需要,他们可以提供,比如在你上面给出的 Blogger 或者 wordpress 例子中。

谷歌阅读器拥有更多信息的唯一原因是它记住了第一次出现时的信息。

有一些信息,像这样的东西谈论作为一个 原子能协议的扩展,但我不知道它是否实际上在任何地方实现。

除了 David Dean 所说的 RSS/Atom 提要将只包含提要发布者当时发布的内容,还需要有人积极收集这些信息以获得任何历史信息。基本上谷歌阅读器是免费的,当你与它交互时,你可以从谷歌数据库服务器检索存储的信息。

现在他们退役了,据我所知,你有两个选择。您或者必须从感兴趣的提要开始收集这些信息,并使用 XML 或类似的技术存储这些数据,或者您可以从出售这类存档提要信息的公司之一购买这些数据。

我希望这个信息能帮到什么人。

肖恩

正如这里提到的其他答复,提要可能不提供归档数据,但是历史项可以从其他来源获得。

Archive.org 的 Wayback Machine 有一个 API 来访问历史内容,包括 RSS 提要(如果他们的机器人已经下载了的话)。我已经创建了 Web 工具 反馈,它使用这个 API 来重新生成包含连接的历史条目的提要。如果您想详细讨论实现,请与我们联系。

另一个潜在的解决方案可能在最初提出问题时不可用,并且不应该需要任何特定的服务。

  1. 找到您想要的 RSS 提要的 URL,并使用 背包获取该提要的归档 URL。
  2. 使用 FeedReader或类似的库下拉存档的 RSS 提要。
  3. 从每个提要获取 URL,并按照您的意愿刮取它们。如果你回到过去,可能会有一些死胡同。

以前的所有答案或多或少都依赖于现有服务仍然保留该提要的副本或提要引擎,以便能够动态地提供较旧的条目。

不过还有另外一种方法,无可否认是积极主动的,而且是理论上的: 让你的 feed 阅读器使用一个从语义上理解 RSS 和/或 Atom feed 的缓存代理,并在每个条目的基础上缓存它们,最多可以达到你所配置的条目数量。

如果提要阅读器不定期投票提要,代理可以根据自己的时间来获取已知的提要,这样就不会错过高度不稳定的提要,比如用户友好(User Friendly)的提要,它只有一个条目,而且每天都在变化(或者至少以前是这样)。因此,如果饲养员。当你离开几天的时候,网络连接崩溃或者丢失,你可能会丢失你的阅读器缓存中的内容。使用代理定期获取这些订阅源(例如从数据中心而不是从家里或者服务器而不是笔记本电脑上)可以让你轻松地运行订阅阅读器,只有在那时和当没有丢失的项目,在你的订阅阅读器获取订阅源之后发布的,但在你下次获取之前又轮换了。

我把这个概念称为 语义饲料代理,并且我已经实现了 概念实现的证明称为 sfp。虽然它只是一个概念的证明,我还没有进一步发展它。(因此,我很乐意得到有类似想法或目的的项目的提示。:-)

这个问题为什么存在?

大多数 RSS 阅读器需要通过实时 URL 导入提要,这使得未在 Wayback Machine 上建立索引的站点更加困难。

之所以可以导入 Wayback Machine 提要,是因为读取器可以根据定义的 TTL 配置定期轮询服务器以获得更新。读取器将当前日期时间与 RSS 提要在 XML 响应中发布的 pubDatelastBuildDate键进行比较。因为当前的日期时间是实时获取的,所以我们无法破解机器的日期时间来解决日期时间分辨率问题。

我在下面列出了一个不用 Wayback 的替代解决方案。不幸的是,我还没有找到一个通用的解决方案,所有饲料来源。

替代解决方案

根据我的经验,不是所有的提要都是部分的。XML 不必指定每篇文章的日期时间。这意味着 RSS 阅读器没有日期时间来过滤提要。这种提要类型的示例可以在 给你中找到。

当时间顺序不相关,内容不需要排序时,这种阅读体验是有用的。这种方法对于那些所有内容都很有价值的网站很有用,Paul Graham 的链接论文就是一个很好的例子。

  1. 如果站点有一个通用的、非按时间顺序排列的提要选项,那么订阅该 RSS (首选选项)。
  2. 下载链接时间戳 .rss文件,剥离日期时间,并将该文件托管到您自己的服务器上。注意,我们可以通过 AWS Lambda 实现这一点。
    1. 设置一个从 live 中获取 RSS 的服务器。
    2. 取回时从 XML 文件中剥离 pubDate标记。
    3. 在您自己的服务器上承载修改后的 RSS。

注意

由于订单丢失,这些都是次优的解决方案,但是,我想提供一个潜在的替代 WaybackMachine。

此外,一些现有的答案需要先进的 系统设计变通方法,更多的前期工作,在某些情况下是过时的(谷歌阅读器被关闭)。我希望它对那些真正需要一个完整的提要列表的解决方案的人有所帮助。从原始的 RSS 文件构建新的 RSS 提要并不太困难。