如何存档RSS提要?

时间:2012-05-01 20:46:11

标签: rss

我需要获取一些RSS源,并存档所有添加到它们的项目。我之前从未使用或创建过RSS,但我知道xml,所以格式看起来非常直观。

我知道如何解析Feed:How can I get started making a C# RSS Reader?

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

我知道我必须在重复项周围有一些自定义逻辑:how to check uniqueness (non duplication) of a post in an rss feed

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

如果你开放依赖服务......我建立了自己的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端点)的定价计划

答案 2 :(得分:0)

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

    Connect to the Web site, and download the XML source of the feed. The Feed Download Engine downloads feeds and enclosures via HTTP or Secure Hypertext Transfer Protocol (HTTPS) protocols only.

    Transform the feed source into the Windows RSS Platform native format, which is based on RSS 2.0 with additional namespace extensions. (The native format is essentially a superset of all supported formats.) To do this, the Windows RSS Platform requires Microsoft XML (MSXML) 3.0 SP5 or later.

    Merge new feed items with existing feed items in the feed store.
    Purge older items from the feed store when the predetermined maximum number of items have been received.

    Optionally, schedule downloads of enclosures with Background Intelligent Transfer Service (BITS). 

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

  

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

     

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

定义删除标准:

The following properties directly affect the number of items that remain after a synchronization operation.

    PubDate—used to determine the "age" of items. If PubDate is not set, LastDownloadTime is used. If the feed is a list, the order of items is predetermined and PubDate (if present) is ignored.

    MaxItemCount—a per-feed setting that limits the number of archived items. The feed's ItemCount will never exceed the maximum, even if there are more items that could be downloaded from the feed.

    ItemCountLimit—the upper limit of items for any one feed, normally defined as 2500. The value of MaxItemCount may not exceed this limit. Set MaxItemCount to ItemCountLimit to retain the highest possible number of items.

<强>参考