如何发现给定URL的RSS源

时间:2008-09-14 18:32:38

标签: php rss feeds discover atom-feed

我从用户那里获得了一个URL。我需要知道:
a)URL是有效的RSS提要吗? b)如果没有与该URL相关联的有效订阅

使用PHP / Javascript或类似的东西

(例如http://techcrunch.com未通过a),但b)将返回其RSS提要

修改:查看我的answer

6 个答案:

答案 0 :(得分:20)

找到我想要的东西:

Google的AJAX Feed API具有加载Feed和查找Feed功能(文档here)。

a)Load feed以JSON

提供Feed(和Feed状态)

b)Lookup feed提供给定网址的RSS Feed

还有一个查找供稿功能,可根据关键字搜索RSS供稿。

计划在JQuery的$ .getJSON

中使用它

答案 1 :(得分:10)

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

示例:

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

答案 2 :(得分:6)

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

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

对于b),如果链接本身不是Feed,您可以解析它并在< head>中查找指定的Feed。页面的一部分,搜索类型为“application / rss + xml”的链接,例如:

<link rel="alternate" title="RSS Feed" 
    href="http://www.example.com/rss-feed.xml" type="application/rss+xml" />

此类链接是大多数浏览器用于“自动发现”Feed的链接(导致RSS图标显示在地址栏中)

答案 3 :(得分:5)

a)检索它并尝试解析它。如果你可以解析它,它是有效的。

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

答案 4 :(得分:4)

对于Perl,有Feed::Find,它可以自动从网页中发现联合供稿。用法非常简单:

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

首先尝试link代码,然后在a代码中扫描名为.rss的文件等等。

答案 5 :(得分:2)

您是使用特定语言执行此操作,还是仅仅需要有关RSS规范的详细信息?

一般来说,查找XML序言:

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

后跟&lt; rss&gt; element,但您可能希望将其验证为XML,完全根据DTD验证它,或验证 - 例如,引用的每个URL都是有效的,等等。更多细节会有所帮助。

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

相关问题