通过Google Reader API获取历史RSS条目
有时候你看到了一个好的Blog,于是你订阅了它,但你会发现,如果直接访问订阅的RSS源,它只会返回最新的10-20条内容,这是由Blog服务器决定的。如果偶们非常希望能够看到它以前所有的文章,怎么办呢?
订阅至Google Reader是个好办法,Google Reader发现你希望看到更多条目的时候,自动会获取更多的历史条目。这是怎么做到的呢?原来Google童鞋已经爬了多年的网络了,它所爬到的信息都存在它的数据库里,所以其实当Google Reader提供给你这些历史条目的时候,它实际上是从它所爬到的数据库中提取出来的。但有时候使用Google Reader也不够方便啦,因为它是增量式提供给你信息的,如果这时候希望获得所有的条目,用Google Reader一小段一小段地去取实在太过麻烦。今天发现了一个方法,很有效,很方便,推荐给各位童鞋。
假设现在希望获得所有的Visual C++ Blog的文章,它所提供的RSS链接是
那么,召唤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啦
拿到了这个xml之后你就可以用你喜欢的方式来显示它了,比如用一个xsl样式,或者自己写一个小程序就行啦~