我收到了一个用户的URL,我需要知道:
a) 这个URL是否是一个有效的RSS订阅源?
b) 如果不是,那么这个URL是否与一个有效的订阅源相关联?
使用PHP/Javascript或类似的工具进行操作。
(例如,http://techcrunch.com 在a)方面失败,但在b)方面将返回他们的RSS订阅源。)
我收到了一个用户的URL,我需要知道:
a) 这个URL是否是一个有效的RSS订阅源?
b) 如果不是,那么这个URL是否与一个有效的订阅源相关联?
使用PHP/Javascript或类似的工具进行操作。
(例如,http://techcrunch.com 在a)方面失败,但在b)方面将返回他们的RSS订阅源。)
我找到了想要的东西:
谷歌的AJAX Feed API提供了load feed和lookup feed功能(文档在这里)。
a) Load feed以JSON格式提供给定URL的RSS源(以及该源的状态)
b) Lookup feed为给定URL提供RSS源
此外,还有一个查找功能,可以根据关键词搜索RSS源。
计划与JQuery的$.getJSON一起使用。
Zend Framework 的 Zend Feed 类 可以自动解析网页并列出可用的订阅源。
例如:
$feedArray = Zend_Feed::findFeeds('http://www.example.com/news.html');
这个链接 可以使你根据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图标出现在您的地址栏中)。
a) 检索并尝试解析它。如果可以解析,则为有效。
b) 测试是否为HTML文档(服务器发送text/html
MIME类型)。如果是,则通过HTML解析器运行它,并查找带有RSS源关系的<link>
元素。
use Feed::Find;
my @feeds = Feed::Find->find('http://example.com/');
它首先尝试使用link
标签,然后扫描名为.rss
的文件和类似文件的a
标签。
您是想要进行某种特定语言的翻译,还是只需要了解有关RSS规范的详细信息?
一般来说,请查找XML prolog:
<?xml version="1.0" encoding="UTF-8"?>
在 <rss> 元素之后,您可能需要将其作为 XML 进行验证,完全针对 DTD 进行验证,或验证例如所引用的每个 URL 是否有效等。更详细的信息会有所帮助。
更新: 啊 - PHP。我发现这个库非常有用:MagpieRSS