如何发现给定URL的RSS源

20

我收到了一个用户的URL,我需要知道:
a) 这个URL是否是一个有效的RSS订阅源?
b) 如果不是,那么这个URL是否与一个有效的订阅源相关联?

使用PHP/Javascript或类似的工具进行操作。

(例如,http://techcrunch.com 在a)方面失败,但在b)方面将返回他们的RSS订阅源。)

6个回答

20

我找到了想要的东西:

谷歌的AJAX Feed API提供了load feed和lookup feed功能(文档在这里)。

a) Load feed以JSON格式提供给定URL的RSS源(以及该源的状态)

b) Lookup feed为给定URL提供RSS源

此外,还有一个查找功能,可以根据关键词搜索RSS源。

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


很遗憾,你必须使用Google Feeds API。RSS有一个基于<head>部分中的<link>元素的简单发现机制。它非常容易实现,如果你这样做,将会减少对Google的依赖。 - Julien Genestoux

10

Zend FrameworkZend Feed 类 可以自动解析网页并列出可用的订阅源。

例如:

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

6

这个链接 可以使你根据W3C规范验证RSS / Atom规范的链接,但需要手动输入URL。

根据您选择的编程语言,有多种程序化方法可以实现此操作-在PHP中,解析有效的XML文件是一个很好的开始方式,然后将其与相关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" />

这种类型的链接是大多数浏览器用于“自动发现”提要的链接(导致RSS图标出现在您的地址栏中)。


5

a) 检索并尝试解析它。如果可以解析,则为有效。

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


4
对于Perl语言,有一个名为Feed::Find的库可以自动从网页中发现订阅源。使用方法非常简单:
use Feed::Find;
my @feeds = Feed::Find->find('http://example.com/');

它首先尝试使用link标签,然后扫描名为.rss的文件和类似文件的a标签。


2

您是想要进行某种特定语言的翻译,还是只需要了解有关RSS规范的详细信息?

一般来说,请查找XML prolog:

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

在 <rss> 元素之后,您可能需要将其作为 XML 进行验证,完全针对 DTD 进行验证,或验证例如所引用的每个 URL 是否有效等。更详细的信息会有所帮助。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接