RSS feed 不输出全文?一样搞定你

流量就是金钱,所以有些网站很吝啬,RSS feed 只给你看几行字,要看全文?对不起,流量送俾我先。本文教你如何在 Google Reader 里面搞定这些铁公鸡,不是用 iframe 预览页面,而是只有正文,全文,图文。

更新:感谢 鲜果 Plus 脚本的作者 CIH 的推荐,这样鲜果用户也可以实现自动全文了 👿

您需要使用 Firefox 的用户脚本管理器 Greasemonkey, 它近日更新的 0.8 版已支持最新版本的 Firefox 3. 让 Google Reader 获取全文 feed 的脚本是 google reader full feed changer, 或者 直接安装它。装好之后,离完成就只剩最后一点点设置了:

新浪体育新闻 为例,打开一篇新浪上的原文,按 ctrl+u 查看页面源代码,发现正文部分是用 <div class=”artibody”> 标注的,那么修改一下刚才的脚本,该脚本通常位于 Firefox 配置文件夹下:

%appdata%\Mozilla\Firefox\Profiles\****
\gm_scripts\googlereaderfullfeedchan.user.js

编辑它,在第九行以下,添加一个 SITE_INFO:

{
  url: 'http://(sports|rss).sina.com.cn',
  xpath: '//div[@class="artibody"]',
  charset: 'gb2312' //非必需
},

保存脚本文件,F5 刷新 Google Reader, 看看新浪的 feed 吧,已经是文首截图的样子了 😀 现在您知道了如何添加一个 SITE_INFO, 添加一下您需要看全文的 feed 信息,以后就省事喽。注意事项:

  • 如果网站域名和 feed 域名不一样,需要把两个域名都写进去,比如:

    url: 'http://(site.com|feed.feedsky.com)',

  • class 和 id 都可以识别
  • 如果出现乱码,在该网站页面源代码中搜索 charset, 设定进 SITE_INFO 中
  • 目前该脚本还不能对付 cnBeta, 因为 cnBeta 的文章地址设置了一个跳转重定向。没关系,订阅 feeds.feedburner.com/cnbeta_full 就好了

最新评论

  • fisio 可不,Google Reader 都去世十年了… Google Reader 的分享和效率
  • 轻重 天哪!今天整理Evernote,发现这条2010年的剪藏笔记,点击连接,原网站还在!12年了,中文互联网早已面目全非! Google Reader 的分享和效率
  • 小波 重新改博客,看看以前的wp小伙伴的博客,发现绝大部分都关了,没想到你的还在,只是停在11年了 我为什么爱 Twitter
  • 心灵博客 当年有这个效果已经很不错哦 diy 山寨投影家庭影院
  • fisio 可不咋地!您也是老司机了 我为什么爱 Twitter

发表您的评论

评论将回复给

😀🙂😯😁🙁😄😆😝😜👍🌈💖🎂

目前有 168 条评论

  1. 使用鲜果的同学也有“鲜果Plus”可以用哦,也是一个Greasemonkey脚本,并且还可以配置关键字,只显示包含这些关键字的文章的全文。
    支持cnbeta,而且可以显示cnbeta的热门评论。
    也可以通过配置xpath来支持其他不提供全文的Feed。

    1. 不一样的,原始的 RSS 获取只是去读一个现成的 xml, 不会访问原文内容。这个方法是尝试访问原文,寻找 xpath 所规定的字段

    1. 嗯,我试了一下,照你这么写是可以全文的,我 url 写的是 http://www.imfzm.com 只是部分文章不行,我打开这些文章,是要求登录的,所以不能获取全文。是不是你没有在 Google Reader 里选中文章?光刷新不会去加载的喔……

        1. 我不知道你哪里出了问题啊,我把你那两句放进脚本,可以全文的……于是猜你是不是犯了个低错误,要高亮一篇文章才开始加载全文喔

  2. 我个人觉得,其实要看全文不就是鼠标点击一下的事情吗?博主写的文章,他付出了劳动,如何显示feed由他来安排并不为过,要流量也是可以理解的。本文的方法是不是相对于动一动鼠标来说复杂了?没有实用性。

    1. 复杂,但是一劳永逸。你说的没错,博主当然有摘要输出的权利,这个问题就好比:博主放置广告以获取收益是合理的,但用户用 adblock 屏蔽广告也是合理的。况且会用 Greasemonkey 的绝不会是大多数人,呵呵

    1. 上下浮动对吧,呵呵,这里顺便预告一下,我在对它进行一次大升级,本月祭出,绝对让它精彩翻倍!haha

        1. 是 fixed, 我也不知道怎么只有 Firefox 有效,浏览器判断语句是 !=IE, Opera Safari 统统不行-___-
          ps: 放一个 favicon.ico 到你的根目录吧,不然你在侧栏是光秃秃的喔! 😮

    1. 这个问题和 cnbeta 的情况类似,因为作者在烧制 FeedBurner 的时候启用了点击统计,所以烧出来的文章标题链接是一个 FeedBurner 的链接,中间有个跳转过程。而且由于 feeds.feedburner.com 被墙,实际上是跳转不了的,除非你在国外,或者翻墙。

      解决办法:
      建议博主去掉跳转,你可以把我 这篇文章 给他看看,或者订阅他的原始feed, 比如 mr6.cc/feed, mr6.cc/?feed=rss2 之类的,就没有 FeedBurner 跳转了

  3. 老肥兄!是不是我太笨了,这篇文章我看了几次了,还是不能正确的修改源代码,所以rss阅读器不能读出全文feed,我使用的是鲜果,能不能把具体修改方法发到我的邮箱,非常急切!

    1. cnBeta 有人做了pipe, 正文最后就是 cB 的全文订阅地址喔~

      会慢一拍,不过关系不大,要抢sf的话看 feed 根本不行,哈哈

    1. 我试过了可以的喔

      {
      url: ‘http://www.eprice.com.tw’,
      xpath: ‘//div[@id=”news_content”]’,
      charset: ‘big5’
      },

  4. 可否帮忙看看苹果blog应该怎样写代码?我找不到那个div[@id是哪个哦?谢谢?
    这里有一个例子:http://blog.1-apple.com.tw/dsp_RSS.cfm?BlogCode=writershu

    1. 不一定是 div, 也不一定是 id…只要是能囊括正文的标注

      你说的这个应该这么写:

      {
      url: ‘http://blog.1-apple.com.tw’,
      xpath: ‘//span[@class=”article-text”]’,
      charset: ‘big5’
      },

    1. 我一开始写的新浪的 xpath 一直是有效的,试试看?

      {
      url: ‘http://(rss|sports|2008).sina.com.cn’,
      xpath: ‘//div[@id=”artibody”]’,
      charset: ‘gb2312’
      },

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

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

      1. 雾之大陆介绍过AutoPager,也是用XPath创建规则的。是否可以找出当前指向下一页的连接,指带有“下一页,next,>>”的连接,找出每一页不同的部分,也就是所要附加的部分?

        1. 嗯,那是运行在原文原页面上的脚本喔,我也在用,阅读器里就麻烦了。有这功夫还是打开原文看吧,人家也不容易,呵呵

  6. 新浪体育的那个
    class=”artibody”换成id=”artibody”才可以,呵呵

    不知道是不是这么久之后改版了

    1. 晕,看上去挺正常的,我试了下不成功

      {
      url: 'http://forum.putclub.com',
      xpath: '//td[@class="postcontent"]',
      charset: 'gbk'
      },

      or

      {
      url: 'http://forum.putclub.com',
      xpath: '//div[@class="t_msgfont"]',
      charset: 'gbk'
      },

  7. 最近改用了cnBeta的FeedBurner全文Feed,但是这个Feed有一个不好的地方:不显示正文的图片和视频。有没有什么办法解决这个问题呢?

  8. 哈哈,终于找到解决这死问题的文章啦!谢谢博主分享!
    嗯,顺便请博主帮忙看怎么添BBC中文的脚本.
    等待中~~
    谢啦

    1. 是这样的,不过还是有办法,cb 的跳转只是链接结构改变,但文章 id 还是一样的,我没有仔细研究过,不过 @shawnster 和 @sfufoet 好像都贴过 yahoo pipes 的教程,另外可以去 http://www.hifiwiki.net/news 找一下有没有现成的 🙂

  9. 请问下
    http://www.chong4.com.cn/read.php?1727 和http://www.plyiyi.cn/dongji/%E6%96%B0%E5%B9%B4%E6%96%B0%E6%B0%94%E8%B1%A1-%E9%80%89%E6%96%B0%E8%A1%A3%E6%9C%8D%E5%96%BD/ 这样的应该如何写呢?
    我的前面一个写的是 {
    url: ‘http://www.chong4.com.cn/feed.php’,
    xpath: ‘//div[@class=”textbox-content”]’,
    charset: ‘gb2312’
    },
    但是还是不对,希望你能帮忙一下,谢谢!

    1. 很奇怪,我刚试了一下也不成功,但是想不出是为什么。我写的跟你有点不一样的是:

      url: ‘http://www.chong4.com.cn’,
      xpath: ‘//div[@class=”textbox-content”]’,
      charset: ‘UTF-8’
      },

  10. 好脚本,不过这样的只能设置全文的起点,不能设置全文的末点,在RSS中就显示了很多没有用的信息(比如网站文章页的页脚之类的信息)
    有没有办法解决这个问题呢?

    1. 不是问题,如果在 xpath 中设置读取 div class=”post” 的部分,则只会读取到这样的 div 结束的地方 </div>

      1. 哦。
        1)那像很多站点会这样构造

        而事实上info的DIV里面显示的内容不是我想要的
        2)有些采用的是表格构造
        这两种情况怎么解决哈?

        1. 表格构造还是有办法的,td tr 什么的都可以用,但一定要有特殊的 class or id.
          更复杂的抓取恐怕是不行了,不过可以试试 Yahoo! Pipes, 那玩意估计行 😮

  11. 这样不好,如果网站没有收益,如果新浪变成腾讯或搜狐。。。。。。我就不用rss了。。。。。

  12. 新浪的那个要把class改成id了,测试成功,但是http/www.mytvblog.org/?feed=rss2的却不行,难道是因为撞墙,只有http://mrss.dokoda.jp/ai/http/www.mytvblog.org/?feed=rss2可以。还有,这些feed是存在google上的,即使原文删除了照样可以看,现在这样一改之后估计就不行了?

    1. 对,这个只是在你打开的时候才去获取原文,不能保存。而且是直接从本机发出访问,也就没有了 Google Reader 的翻墙功能

  13. 爬了不少文也找不到不能輸出eprice rss的全文的原因,博主知道原因嗎?
    {
    url: ‘http://(www.eprice.com.tw|www.phonedaily.com)’,
    xpath: ‘//div[@class=”content”]’,
    charset: ‘utp8’
    },

  14. 你好,十分感谢你的方法,不过你右边的浮动发表评论是如何实现的啊 能否分享一下代码啊 谢谢了哦

  15. 小弟顺手弄得几个,发现都可用,共享下
    {
    url: ‘http://www.cnbeta.com’,
    xpath: ‘//div[@id=”news_content”]’,
    charset: ‘gb2312’
    },//cnbeta
    {
    url: ‘http://cn.engadget.com’,
    xpath: ‘//div[@class=”postbody”]’,
    charset: ‘utf-8’
    },//瘾科技
    {
    url: ‘http://jandan.net’,
    xpath: ‘//div[@class=”post f”]’,
    charset: ‘UTF-8’
    },//煎蛋

    1. {
      url: ‘http://(feed|www).ipc.me/’,
      xpath: ‘//div[@class=”post_content”]’,
      charset: ‘utf-8’
      },//ipc
      {
      url: ‘http://(feed|www).iplaysoft.com/’,
      xpath: ‘//div[@class=”entry-content”]’,
      charset: ‘utf-8’
      },//异次元
      {
      url: ‘http://www.infzm.com’,
      xpath: ‘//div[@id=”content-context”]’,
      charset: ‘utf-8’
      },//南方周末所有订阅点

      1. 下面这个是添加南方周末-图片新闻以后的代码,遗憾的只能显示首页,需要按照http://qixinglu.com/archives/google_reader_full_feed_changer_multi_part_xpath里的方法改一下参数
        {
        url: ‘http://www.infzm.com’,
        xpath: ‘//div[@id=”content-context”]|//div[@class=”photo”]|//div[@class=”caption”]’,
        },

    2. {
      url: ‘http://blog.sina.com.cn’,
      xpath: ‘//div[@id=”sina_keyword_ad_area2″ and @class=”articalContent “]’,
      charset: ‘utf-8’
      },//新浪博客

  16. 而且发现js文件编辑不支持ansi,需要用utf-8编写,特别是冒号、顿号在两者中间差别比较大,所以许多童靴的地址看起来写的是对的,但没有效果,原因可能在此




还有 22 条 pingbacks 从其它网站引用了本文