您的位置:首页 > Web前端

google提供的几种读取feed的API

2011-11-12 11:11 295 查看
http://blog.csdn.net/abby_dcy/article/details/5739358

通过Google Reader API使用n参数读取feed历史条目的方法。使用google 提供的API访问feed除了可以访问到历史条目外,还让google 处理各式各样的feed格式(Atom 1.0,Atom 0.3,RSS 2.0,RSS 1.0,RSS 0.94,RSS 0.93,RSS 0.92,RSS 0.91,RSS 0.9),统一返回一种格式(ATOM或JSON),为开发中在程序中解析feed提供便捷。

本文总结我在开发FeedzShare 的过程中找到的的几种读取feed的Google API,其中有些来自于Google 官方文档,有些来自于对网上开发者google web 应用的hacking。

1。Google Reader ATOM API
访问http://www.google.com/reader/atom/feed/<feed url>,
读到ATOM格式的最近20条item。

可选参数:
n:返回多少条记录。http://www.google.com/reader/atom/feed/http://blogs.msdn.com/vcblog/rss.xml?n=100 返回最近100条;

r: 按时间排序,缺省是从最近的开始(r=d),可以改成从最老的开始(r=o),好像最多回溯一个月;

ot:只读取某个时间点以后的item,精确到秒。需要把时间转换成Unix
Timestamp.
http://www.google.com/reader/atom/feed/http://blogs.msdn.com/vcblog/rss.xml?ot=1250120710 就只返回2009年8月12日6:45:10pm
以后的记录;

c:分页读取记录。用n=99999的方式读取feed所有记录虽然可行,但一次性返回大量数据既消耗服务器资源,严重影响scalability,同时客户端调用时也容易超时。因此Google
提供了cursor方式分页读取。关于cursor方式分页,这篇blog"用Twitter的cursor方式进行Web数据分页"有很好的介绍. 读取http://www.google.com/reader/atom/feed/http://blogs.msdn.com/vcblog/rss.xml?n=10 时,在返回的ATOM
XML的头可以找到这样的代码:

[b]<gr:continuation
xmlns:gr="http://www.google.com/schemas/reader/atom/">[b]CLXq-OrG05sC
</gr:continuation>[/b][/b]

类似CLXq-OrG05sC这样的字符串就是读取下一页用的参数。要读取下一页10条记录,使用这样的url访问:http://www.google.com/reader/atom/feed/http://blogs.msdn.com/vcblog/rss.xml?n=10&c=CLXq-OrG05sC
返回的XML中又能找到新的continuation参数,这样反复下去,直到读完所有记录。注意continuation是google
服务器随机产生,你看到的字符串和我这里写的是不一样的。

除了只读接口外,google 还有写入api。完整的ATOM API可以在这里找到,作者还开发了一套Python
Library。但是需要注意的是google reader从未正式发布此api,因此接口随时可能改变甚至取消。

2。Google Reader Javascript 接口

除了返回ATOM 格式外,Google Reader其实还能返回JSON格式的数据. 如果是希望在页面中显示feed,不需要调用复杂的XML API,直接从Javascript中操作JSON数据就行了。
要读取JSON数据,需要访问这个url:http://www.google.com/reader/public/javascript/feed/<feed url>。

上面介绍的各项参数在Javascript接口中都能使用。但是Javascript接口与ATOM接口的区别在于不返回feed 条目的全文,只返回google rader 服务器处理过的摘要(summary字段)。在有些不需要显示全文的场景(只显示列表)利用这一特点可以大大减少返回的数据量,无论是网络传输和解析时间都会快很多。

3。Google AJAX Feed 接口

Google
AJAX Feed API 是Google 提供的一套javascript 类库,自动处理跨域调用和feed格式,主要目的是简化web开发者读取,操作以及显示feed的过程。同时它也提供了一个RESTful的API,供非Javascript客户端调用。以下例子来自官方文档,要读取Digg的feed源(http://www.digg.com/rss/index.xml),只需访问url: http://ajax.googleapis.com/ajax/services/feed/load?q=http%3A%2F%2Fwww.digg.com%2Frss%2Findex.xml&v=1.0


Google AJAX Feed API能返回JSON和ATOM格式的数据,甚至可以返回JSON和XML混合格式。返回JSON格式时和Google
Reader Javascript 接口不同的是它返回全文feed,而不仅仅是摘要。而ATOM格式甚至支持feed源自定义字段,如上文digg
的RSS中被digg的次数。

可用参数:
num:返回记录数量,最大100

地址必须用http协议访问才有效,直接读取如java.io的read就会报302错误,具体原因不明,可能是要在请求头里加一些参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: