8 15 2008

Newsfox搞定RSS全文输出

Published by muzuiget at 5:59 下午 under Firefox

今天发现我用的RSS阅读器Firefox扩展Newsfox更新了,发现增加一个很重要的功能,过滤网页。

曾经看过老肥博客的《RSS feed 不输出全文?一样搞定你》,用一个Greasemonkey扩展的一个脚本google reader full feed changer来搞定那些不支持全文输出的feed,感觉很爽,于是切换到Google Reader。用了一段时间,不习惯,换回Newsfox了,我用的是宽屏,还是3栏式界面好。这次更新支持了XPath过滤网页,爽翻了。

使用方法
先不用任何设置,当你看到某些文章出现令人不爽的“点击阅读全文”的时候,在标题面板选中文章,按一下“W”键,那么应该出现文章的全文了,再按一下就切换回来摘要。不过不是所有feed都行的,显示也不一定是全文,也可能是显示了一些多余段落。如果Newsfox不能默认识别,那么就要自己添加规则了。

Newsfox过滤网页对话窗口

在feed的选项窗口多了个“网页过滤”标签,支持3个网页过滤方式

  • RegExp:正则表达式,太难写了。默认就是“<p.*?<\/p>”,也就是显示标签<p>之间的内容,一般能对付部分feed了。
  • JavaScript:不会。
  • XPath:还是XPath最方便,跟google reader full feed changer使用的规则一样。

自定义规则方法如下

  1. 选中过滤规则为“XPath”,在输入框输入XPath表达式,但是多个表达式跟google reader full feed changer不同,直接用“|”符号连成一行就行了。
  2. 然后偷懒点都选“覆盖字符集”为“+”号,自动检测搞定。
  3. 这里有一个“下载后过滤所有新文章后的网页”,勾选它就自动过滤新文章,如果不选,那么在阅读的时候要在标题栏点一下过滤按钮(在标题栏右上角那个按钮选中后才显示)才后过滤,也可以按快捷键“W”。

编写规则
至于规则怎么写,可以参考另一个扩展——Autopager,也是用XPATH做过滤规则用,用它的自动翻页工作室来调试是很方便的。参考(《AutoPager简明攻略三-创建规则》,把自动翻页工作室里的规则复制出来就行啦。更多辅助工具也可看《AutoPager简明攻略四-辅助工具》

其它用途
有了这个功能真实省时间啊,即使feed已经输出了全文连接,不过也可以作为切换为评论内容,比如小众软件煎蛋,每篇文章都有不少人评论,以前看到那句“猛击这里评论,已经有XX人登录火星”总有点冲动点击,现在点击一下“W”键即可显示评论了,爽啊。

规则分享
贴几个常看的网站的XPATH,不过Newsfox还是不支持Cnbeta的重定向(真可恶)。不少博客也不输出全文的,避免得罪人,这里不贴国内个人博客,各位看官自己写吧。

软件更新类
DistroWatch显示更新提要和中文介绍

//table[@class="News1"]/tbody/tr[4] | //table[@class="Info" and position()=2]

Firefox扩展显示介绍和更新信息

//div[@id="addon-summary"] | //div[@id="addon-advanced"]

技巧blog类

小众软件评论
//h6[@class="comments"] | //div[@id="commentlist"]

HowtoForge

//div[@class="node"]/div[@class="content"]

Ubuntugeek

//div[@class="entrytext"]

IT新闻类
LUPA开源社区

//div[@id="articlebody"]

驱动之家新闻

//td[@class="f14_black"]

其它类
新浪体育国际足坛

//div[@id='artibody']

煎蛋评论

//h3[@id="comments"] | //li[contains(@id,"comment")]/div

9 Responses to “Newsfox搞定RSS全文输出”

  1. seinon 26 10 2008 at 1:35 下午

    哈哈哈,这个好,我一度也爱用 newsfox

    但是当我订阅的 feed 超过500 以后还是老老实实用 GR了

  2. seinon 28 10 2008 at 3:50 下午

    用你的方法搞定网易新闻,但是牛博的rss 还是无效

    http://www.bullog.cn/Blog/RssHandler.ashx?selectedA=1&selectedB=1

    有办法吗

  3. muzuigeton 28 10 2008 at 10:48 下午

    @sein
    试试用这个
    //div[@class="EntryBody"]

  4. seinon 29 10 2008 at 9:48 下午

    很惊讶的发现你再读取煎蛋的评论,其实,只要一句 //ol[@class="commentlist"] 就可以搞定

    我一直在想办法同时读取煎蛋的正文和评论,但是分隔符 | 是或的意思,你有办法同时读取显示吗?

    正文是 //div[@class="entry2"]

  5. muzuigeton 30 10 2008 at 12:01 上午

    @sein

    很惊讶的发现你再读取煎蛋的评论

    很早之前写了,积累点技巧,所以我更新了一下文章。

    只要一句 //ol[@class="commentlist"] 就可以搞定

    确实这样也可以,看起来还比较简洁,我之前也是这样写的,不过这句显示出来的效果是在正文面板左边有空白,我看起来很不爽,所以写成这样。“|”前那句是加显示一句有多少人留言的标题,唉,软件洁癖作崇,简单问题复杂化。

    我一直在想办法同时读取煎蛋的正文和评论,但是分隔符 | 是或的意思,你有办法同时读取显示吗?

    “|”是都选取的意思,我在文章中的例子有几个也用上了“|”,newsfox不支持多行表达式,所以只能用“|”连接起来,开始我也以为用

    //div[@class="entry2"] | //ol[@class="commentlist"]

    就能搞定了,结果评论不出来了,很奇怪,我用Autoager和XPather,XPather Checker扩展测试过,这个表达式确实是包含正文和评论,用

    //div[@id="content"]

    都一样,不知道是newsfox的问题还是煎蛋代码过于彪悍还是我人品不好。小众软件也是也种情况,不过LinuxToy却行。

    后来发现,用默认的正则表达式就行了(清空文本框内容),不过这样评论格式会丢失。

  6. seinon 30 10 2008 at 12:03 下午

    人肉 TB 一下吧,一些关于 xpath 的资源

    http://boboing.com/2008/10/871

    不知道用 js 方式能不能搞定 - -

  7. muzuigeton 30 10 2008 at 1:20 下午

    @sein
    照猫画虎憋了2条出来

    getElementsByClass("entry2", "div", linkDOM)[0].innerHTML;
    getElementsByClass(”commentlist”, “ol”, linkDOM)[0].innerHTML;

    结果还是跟XPath一样。

  8. 癔雨人on 19 11 2008 at 12:48 上午

    我现在使用了”google reader full feed changer”GM脚本实现了驱动之家的RSS全文输出,但是遇到了较长的需要翻页的文章,只能显示第一页的内容。请问资深人士,能不能帮忙看看怎么改动脚本可以使需要翻页的文章真正的全文输出到Google Reader。万分感谢。

    {
    url: ‘http://(rss|news).mydrivers.com’,
    xpath: ‘//td[@class="f14_black"]‘,
    charset: ‘gb2312′ //非必需
    },

  9. muzuigeton 21 11 2008 at 10:08 上午

    @癔雨人
    我也没办法,驱动之家新闻多数都是一页吧,测评就很多页,我是打开链接后再用Autopager对付的,自动翻页规则我贴在这里

Trackback URI | Comments RSS

Leave a Reply