【问题标题】:How To Discover RSS Feeds for a given URL如何发现给定 URL 的 RSS 提要
【发布时间】:2010-09-08 20:37:16
【问题描述】:

我从用户那里得到一个 URL。我需要知道:
a) 该 URL 是有效的 RSS 提要吗?
b) 如果没有,是否存在与该 URL 关联的有效提要

使用 PHP/Javascript 或类似的东西

(例如,http://techcrunch.com 失败 a),但 b) 将返回他们的 RSS 提要)

编辑:见下面我的answer

【问题讨论】:

    标签: php rss feed discover atom-feed


    【解决方案1】:

    Zend-frameworkZend Feed class 可以自动解析网页并列出可用的提要。

    示例:

    $feedArray = Zend_Feed::findFeeds('http://www.example.com/news.html');
    

    【讨论】:

      【解决方案2】:

      找到了我想要的东西:

      Google 的AJAX Feed API 具有加载提要和查找提要功能(Docs here)。

      a) Load feed 以 JSON 格式提供提要(和提要状态)

      b) Lookup feed 提供给定 URL 的 RSS 提要

      还有一个查找提要功能,可以根据关键字搜索 RSS 提要。

      计划将此与 JQuery 的 $.getJSON 一起使用

      【讨论】:

      • 太糟糕了,您必须为此使用 Google Feeds API。 RSS 有一个基于 部分中的 元素的简单发现机制。它很容易实现,如果你这样做,它将消除对 Google 的一个依赖。
      【解决方案3】:

      对于 Perl,有 Feed::Find ,它可以自动从网页中发现联合提要。用法很简单:

      use Feed::Find;
      my @feeds = Feed::Find->find('http://example.com/');
      

      它首先尝试link 标记,然后扫描a 标记以查找名为.rss 之类的文件。

      【讨论】:

        【解决方案4】:

        This link 将允许您使用 W3C 规范根据 RSS/Atom 规范验证链接,但确实需要您手动输入 URL。

        根据您选择的语言,有多种以编程方式执行此操作的方法 - 在 PHP 中,解析文件 as valid XML 是一个很好的开始方式,然后将其与 relevant DTD 进行比较。

        对于b),如果链接本身不是feed,可以解析它,在页面的

        部分寻找指定的feed,搜索类型为“application/rss+xml”的链接",例如:
        <link rel="alternate" title="RSS Feed" 
            href="http://www.example.com/rss-feed.xml" type="application/rss+xml" />
        

        大多数浏览器都使用这种类型的链接来“自动发现”供稿(导致 RSS 图标出现在您的地址栏中)

        【讨论】:

          【解决方案5】:

          您是使用特定语言执行此操作,还是只想了解有关 RSS 规范的详细信息?

          一般来说,寻找 XML 序言:

          <?xml version="1.0" encoding="UTF-8"?>
          

          后跟 元素,但您可能希望将其作为 XML 进行验证,根据 DTD 对其进行全面验证,或验证 - 例如,引用的每个 URL 都是有效的,等等。更多详细信息会有所帮助。

          更新:啊 - PHP。我发现这个库非常有用:MagpieRSS

          【讨论】:

            【解决方案6】:

            a) 检索它并尝试解析它。能解析就有效。

            b) 测试它是否是 HTML 文档(服务器发送 text/html)MIME 类型。如果是这样,请通过 HTML 解析器运行它并查找具有 RSS 提要关系的 &lt;link&gt; 元素。

            【讨论】:

              猜你喜欢
              • 2012-03-04
              • 1970-01-01
              • 2011-05-07
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-05-28
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多