2010年1月21日星期四

[GFW BLOG] 通过Google Reader API获取历史RSS条目

作者:Chris   来源:http://lync.in/get-all-rss-items-by-google-reader/

有时候你看到了一个好的Blog,于是你订阅了它,但你会发现,如果直接访问订阅的RSS源,它只会返回最新的10-20条内容,这是由Blog服务器决定的。如果偶们非常希望能够看到它以前所有的文章,怎么办呢?

订阅至Google Reader是个好办法,Google Reader发现你希望看到更多条目的时候,自动会获取更多的历史条目。这是怎么做到的呢?原来Google童鞋已经爬了多年的网络了,它所爬到的信息都 存在它的数据库里,所以其实当Google Reader提供给你这些历史条目的时候,它实际上是从它所爬到的数据库中提取出来的。但有时候使用Google Reader也不够方便啦,因为它是增量式提供给你信息的,如果这时候希望获得所有的条目,用Google Reader一小段一小段地去取实在太过麻烦。今天发现了一个方法,很有效,很方便,推荐给各位童鞋。

假设现在希望获得所有的Visual C++ Blog的文章,它所提供的RSS链接是

http://blogs.msdn.com/vcblog/rss.xml

那么,召唤Google童鞋~

http://www.google.com/reader/atom/feed/http://blogs.msdn.com/vcblog/rss.xml?n=100

看清楚咯,http://www.google.com/reader/atom/feed/ + 你的RSS + ?n= + 你所需要的条目数量

通过这个API,Google Reader就会把它数据库里关于这个feed的条目根据你所需要的数量以Atom的格式返回给你。如果你想要所有的条目,很简单,设n=999999就 行了...简单估计一下,一个Blog开20年每天100篇发布的话也不会超过这个数字的,所以放心吧~

当然这里还有个小问题,如果我的feed的url中含有一个问号“?”怎么办?比如这个feed

http://www.gmazars.info/conf/rss/rss_builder.php?feed=gmazars.xml

如果直接访问http://www.google.com/reader/atom/feed/http://www.gmazars.info /conf/rss/rss_builder.php?feed=gmazars.xml?n=100这个url,Google会告诉你,内部服务器错 误。解决方法也很简单,用HTML Encoding把“?”符号Encoding掉就好了,去查了一下编码表,“?”对应%3F,所以说,用这个url访问就OK啦

http://www.google.com/reader/atom/feed/http://www.gmazars.info/conf/rss/rss_builder.php%3Ffeed=gmazars.xml?n=100

拿到了这个xml之后你就可以用你喜欢的方式来显示它了,比如用一个xsl样式,或者自己写一个小程序就行啦~




--
Posted By GFW Blog to GFW BLOG at 1/21/2010 05:09:00 AM

没有评论:

发表评论