如何发现给定URL的RSS源
我从用户那里得到一个URL。我需要知道:
a)URL是有效的RSS提要吗?
b)如果没有有效的提要与该URL相关联
使用PHP / Javascript或者类似的东西
(例如,http://techcrunch.com失败a),但是b)会返回其RSS feed)
编辑:请参阅下面的我的答案
解决方案
回答
a)检索它并尝试对其进行解析。如果我们可以解析它,那是有效的。
b)测试它是否是HTML文档(服务器发送了" text / html")MIME类型。如果是这样,请通过HTML解析器运行它,并查找具有RSS feed关系的<link>
元素。
回答
该链接将允许我们使用W3C规范根据RSS / Atom规范来验证该链接,但确实需要我们手动输入网址。
有多种方法可以通过编程方式执行此操作,具体取决于我们在PHP中选择的语言,将文件解析为有效XML是一个很好的开始,然后将其与相关DTD进行比较。
对于b),如果链接本身不是供稿,则可以对其进行解析,然后在页面的<head>部分中查找指定的供稿,搜索类型为" application / rss + xml"的链接,例如:
<link rel="alternate" title="RSS Feed" href="http://www.example.com/rss-feed.xml" type="application/rss+xml" />
这种链接是大多数浏览器用来"自动发现"提要的链接(导致RSS图标显示在地址栏中)
回答
我们是使用特定的语言执行此操作,还是只需要有关RSS规范的详细信息?
通常,寻找XML序言:
<?xml version="1.0" encoding="UTF-8"?>
后跟一个<rss>元素,但是我们可能希望将其验证为XML,针对DTD对其进行完全验证,或者验证例如所引用的每个URL是否有效,等等。更多详细信息会有所帮助。
更新:啊PHP。我发现此库非常有用:MagpieRSS
回答
找到了我想要的东西:
Google的AJAX Feed API具有加载供稿和查找供稿功能(此处为文档)。
a)加载供稿以JSON提供供稿(和供稿状态)
b)查找提要提供给定URL的RSS提要
还有一个查找提要功能,可根据关键字搜索RSS提要。
计划与JQuery的$ .getJSON一起使用
回答
Zend框架的Zend Feed类可以自动解析网页并列出可用的feed。
例子:
$feedArray = Zend_Feed::findFeeds('http://www.example.com/news.html');
回答
对于Perl,有Feed :: Find,它可以自动从网页中发现联合供稿。用法非常简单:
use Feed::Find; my @feeds = Feed::Find->find('http://example.com/');
它首先尝试使用link
标签,然后在a
标签中扫描名为.rss的文件。