20

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

使用 PHP/Javascript 或类似的东西

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

4

6 回答 6

20

找到了我想要的东西:

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

a)加载提要以 JSON 格式提供提要(和提要状态)

b)查找提要提供给定 URL 的 RSS 提要

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

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

于 2008-09-14T18:45:06.433 回答
10

Zend框架Zend Feed 类可以自动解析网页并列出可用的提要。

例子:

$feedArray = Zend_Feed::findFeeds('http://www.example.com/news.html');
于 2008-09-15T11:49:58.247 回答
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 图标出现在您的地址栏中)

于 2008-09-14T18:34:44.290 回答
5

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

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

于 2008-09-14T18:34:27.940 回答
4

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

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

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

于 2008-09-16T12:46:27.277 回答
2

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

通常,查找 XML 序言:

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

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

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

于 2008-09-14T18:35:59.607 回答