4

我需要获取一些 RSS 提要,并将添加到其中的所有项目存档。我以前从未使用或创建过 RSS,但我知道 xml,所以格式看起来很直观。

我知道如何解析提要:如何开始制作 C# RSS 阅读器?

我知道我不能依靠 feed 服务器来提供完整的历史记录:Is it possible to get RSS archive

我知道我必须有一些关于重复的自定义逻辑:如何检查 rss 提要中帖子的唯一性(非重复)

我的问题是,我怎样才能确保我不会错过任何物品?我最初的计划是编写一个解析器,其中对于提要中的每个项目:1)检查它是否已经在存档数据库中 2)如果没有,将其添加到数据库中如果我安排它每天运行一次,可以我有信心不会遗漏任何物品吗?

4

3 回答 3

3

这取决于提要,一些网站非常频繁地发布文章,并且可能将其 RSS 提要配置为仅显示 10 篇最新文章。有些网站会做相反的事情。

理想情况下,您的应用程序应该从站点“学习”频率,并根据学习到的频率调整自身以 ping 这些站点。(例如:如果您每次 ping 都看到新的独特文章,则需要更频繁地 ping,另一方面,如果您多次尝试看到同一组文章,您可能会在下次退出)。

于 2012-05-01T20:50:09.940 回答
1

如果您愿意为此依赖服务...我建立了自己的 RSS 存档服务 ( https://app.pub.center )。您可以通过我们的 API 访问 RSS 提要的数据。

大西洋的第 1 页 https://pub.center/feed/02702624d8a4c825dde21af94e9169773454e0c3/articles?limit=10&page=1

大西洋的第 2 页 https://pub.center/feed/02702624d8a4c825dde21af94e9169773454e0c3/articles?limit=10&page=2

REST API 是免费的。我们有推送通知的定价计划(电子邮件、短信、您的自定义 API 端点)

于 2017-03-30T18:13:24.913 回答
0

根据饲料和存储限制使用一系列决策。例如:

    连接到 Web 站点,并下载提要的 XML 源。提要下载引擎仅通过 HTTP 或安全超文本传输​​协议 (HTTPS) 协议下载提要和附件。

    将提要源转换为 Windows RSS 平台本机格式,该格式基于 RSS 2.0 和附加的命名空间扩展。(本机格式本质上是所有受支持格式的超集。)为此,Windows RSS 平台需要 Microsoft XML (MSXML) 3.0 SP5 或更高版本。

    将新的提要项目与提要商店中的现有提要项目合并。
    当接收到预定的最大数量的项目时,从源存储中清除旧项目。

    或者,使用后台智能传输服务 (BITS) 安排附件的下载。

充分利用 HTTP 以最大程度地减少浪费的带宽:

为了限制其对服务器的影响,Feed 下载引擎在 HTTP (RFC3229) 万维网链接中实现了 HTTP 条件 GET 与 Delta 编码相结合。此实现允许服务器传输更改的最小描述,而不是传输缓存在客户端上的全新资源实例。该引擎还支持使用 Microsoft Win32 Internet (WinInet) 的 HTTP gzip 支持进行压缩。

成功同步意味着提要已成功下载、验证、转换为原生格式并合并到商店中。响应 HTTP 条件 GET(If-Modified-Since、If-None-Match、ETag 等)的 HTTP 304 Not Modified 服务器响应也构成成功。

并定义移除标准:

以下属性直接影响同步操作后剩余的项目数。

    PubDate——用于确定项目的“年龄”。如果未设置 PubDate,则使用 LastDownloadTime。如果提要是列表,则项目的顺序是预先确定的,并且忽略 PubDate(如果存在)。

    MaxItemCount - 限制归档项目数量的每个提要设置。提要的 ItemCount 永远不会超过最大值,即使可以从提要中下载更多项目也是如此。

    ItemCountLimit — 任何一个 Feed 的项目上限,通常定义为 2500。MaxItemCount 的值不得超过此限制。将 MaxItemCount 设置为 ItemCountLimit 以保留尽可能多的项目。

参考

于 2016-10-06T17:31:12.920 回答