关于php:如何发现给定URL的RSS feed

关于php:如何发现给定URL的RSS feed

How To Discover RSS Feeds for a given URL

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

使用PHP / Javascript或类似的东西

(例如,http://techcrunch.com失败a),但是b)会返回其RSS feed)

编辑:请参阅下面的答案


找到了我想要的东西:

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

a)加载供稿以JSON提供供稿(和供稿状态)

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

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

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


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

例:

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

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

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

对于b),如果链接本身不是供稿,则可以对其进行解析并在页面的部分中查找指定的供稿,搜索类型为" application / rss + xml"的链接,例如:

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

这种链接是大多数浏览器用来"自动发现"提要的链接(导致RSS图标显示在地址栏中)


a)检索并尝试对其进行解析。如果您可以解析它,那是有效的。

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


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

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

它首先尝试使用link标记,然后在a标记中扫描名为.rss的文件以及类似的文件。


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

通常,寻找XML序言:

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

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

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


推荐阅读