这篇文章是专门针对solidot的,solidot这网站的feed只输出摘要确实挺讨厌的,不过觉得它的文章还算有价值,评论也比cnbeta有营养多了,还是订阅并用Google reader full feed changer来对付,用下面两条xpath来获取全文和评论
{ url: 'http://solidot.org', xpath: '//div[@class="body"] | //ul[@id="commentlisting"]' },
全文获取没问题,当然引用部分居然用“<i>”来包住确实值得强烈鄙视,抓取全文在Google Reader就成斜体。
好了这就算了,评论默认使用嵌套线型,如果要看后续回复,你得切换成嵌套平铺,这还会跳到另一个页面。而还是有些评论叠着起来,原来还要把门槛切换成“-1: XX条评论”才会把所有评论显示出来。
也就是看一篇文章的正文要点击好几次,还不算上正文提到的链接。研究一下,其实链接末尾加上“&threshold=-1&mode=nested”,就可以了,比如这个,全部评论都出来吧。
现在就需要修改Google reader full feed changer,让它直接把所有评论获取出来,也就是自动加上面那两个参数。编辑脚本,在开头“FullFeed.getCurrentEntry”的函数里,有这么一段
var len = SITE_INFO.length; for (var i = 0; i < len; i++) { var reg = new RegExp(SITE_INFO[i].url); if (source.match(reg) || link.match(reg)) { this.request(i, link, body); break; } }
在if语句下插入改写语句,就这一句
if (i == N) link += "&threshold=-1&mode=nested"
其中“i == N”里的“N”改成要feed在SITE_INFO里的顺序,从0开始,比如我的solidot在SITE_INFO排在最前面,所以是0。“link”是文章原始链接。改好后如下,保存刷新Google Reader就看到效果了。
var len = SITE_INFO.length; for (var i = 0; i < len; i++) { var reg = new RegExp(SITE_INFO[i].url); if (source.match(reg) || link.match(reg)) { // get full solidot comment if (i == 0) link += "&threshold=-1&mode=nested" this.request(i, link, body); break; } }
一些比较抠门的网站在feed里的链接还不是原始链接,或者要再跳转一下,把链接改写,就能把全文抓下来了。



请问一下订阅http://blog.soft.idv.tw/?feed=rss2后增加
url: ‘http://blog.soft.idv.tw)’,
xpath: ‘//div[@class="post"]‘,
charset: ‘utp8′
虽然可以看到全文,但是排版全乱掉了,该如何解决?
@slowman001
因为没有把相应的CSS也抓过来,这个没办法(有也是非常麻烦),只能将就看。