我从用户那里获得了一个URL。我需要知道:
a)URL是有效的RSS提要吗?
b)如果没有与该URL相关联的有效订阅
使用PHP / Javascript或类似的东西
(例如http://techcrunch.com未通过a),但b)将返回其RSS提要
修改:查看我的answer
答案 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