正如我们都知道的,全文Feed最有用。
但是,世界上的大部分Feed,都是摘要Feed,甚至是标题Feed。我们只好自己动手,制作全文Feed。
传统的制作方法非常麻烦,需要针对不同的网站,编写不同的内容提取规则。要是有一个傻瓜型的"全文Feed生成器",把摘要Feed往里面一扔,全文Feed就自动生成了,那该多好。
FiveFilters.org提供的生成器,大概最接近于这种要求。
举例来说,网易的社会新闻Feed(http://news.163.com/special/00011K6L/rss_sh.xml)是一个摘要Feed。
我们把这个网址,送进FiveFilters.org,点击"Create Feed"按钮,全文Feed就自动产生了!(查看效果)
但是,这个生成器并不是百用百灵,比如新浪的Feed(http://rss.sina.com.cn/news/society/focus15.xml)就无法抓取全文。
好在今年3月份,它开源了。作者Keyvan Minoukadeh将所有代码都公开了,所以如果遇到不能生效的Feed,现在我们就可以修改源码了。因此理论上,几乎所有的摘要Feed都可以自动转成全文Feed了。
源码存放在launchpad.net上,需要安装Bazaar的客户端才能下载。我为大家提供方便,把它们压缩成一个zip文件,点击下载(1.0版,217KB)。
下载后,上传到支持PHP 5.2的虚拟主机上,就可以直接使用。使用的时候,需要将cache子目录设为可写(权限777)。在config-sample.php文件中,可以查看设置选项,修改默认值后,将文件名改为config.php,就会生效。(不修改亦可,config文件并不是必需的。)
这个程序的核心是readability.php文件,它负责判断当前网页中,那一部分属于页面的主要内容,然后将其抓取出来。实现原理照搬了arc90的ReadAbility脚本。简单说,思路是这样的:1)检查页面中所有p元素的父容器;2)根据相关特征,为每一个父容器计算一个特征值;3)特征值最大的容器,就是放置主要内容的容器。
具体实现请阅读代码,源码写得非常清晰,而且有详细的注释。如果遇到不能抓取全文的Feed,你就要自己修改readability.php,增加相应的规则。比如,在我提供下载的代码中,我就设置了新浪网的规则,新浪网的全文Feed就能自动生成了。
这个程序使用的是AGPL许可证,这就是说你可以自由地使用、修改、发布这个程序,但是只要你向他人提供基于这个程序的服务,你就必须公开源码。
作者Keyvan Minoukadeh允诺,只要使用者向他捐款200美元,就发布2.0版。如果你喜欢这个程序,建议向他捐款。
P.S.
这几天,我还发现了一个非常优秀的开源相册软件ZenPhoto,也推荐使用。
UPDATE(2010.6.3)
Full TEXT RSS 1.5版下载(283KB)
UPDATE(2010.11.10)
Full TEXT RSS 2.1版下载(362KB)
(完)
zp 说:
能不能介绍些Movable Type的文章,我比较喜欢它的静态页面,国内关于它的资料好像还不多。特别是MT5出来后,多页面功能可能会让刚接触的人晕头转向。
2010年4月17日 16:27 | # | 引用
火点 说:
很好,谢谢作者,只是赶到花了大量的时间在新闻上似乎有点不利于思考。
用一个图书管理软件(BLM)整理了大学期间看过的书,仅有180本左右,汗颜,这就是我的大学……
现在参加工作了,好在业余时间还算充裕,希望可以多读一些书。
2010年4月17日 19:08 | # | 引用
AlbertDiao 说:
如果是手机RSS的话,摘要Feed比较好。一般浏览摘要,感兴趣的点进全文,这样比较节省流量。
2010年4月17日 19:26 | # | 引用
野草博客 说:
嗯,野草一直在用他:)
2010年4月17日 22:27 | # | 引用
Ruan YiFeng 说:
流量会越来越便宜,真正昂贵的是你的时间。所以还是全文Feed好。
我有这个打算,但是文章不太好写,还需要准备。
2010年4月17日 22:31 | # | 引用
luops 说:
昨晚测试了此订阅
同时我也保留了原订阅。
今天发现,同样订阅了163新闻的情况下
全文订阅比官方订阅少了很多新闻
不知其他童靴有没有这样子情况
2010年4月18日 09:39 | # | 引用
鲜为人志 说:
呵呵~ 这样都可以啊~
2010年4月18日 09:53 | # | 引用
roy_hu 说:
我更喜欢全文博客,因为在手机上看Google Reader,自动都排好了版,而看全文的时候需要浏览器排版,没有Google Reader那样专门设计给手机的看着舒服。
2010年4月18日 10:13 | # | 引用
Jack 说:
另外,也可以用YAHOO PIPE 和YQL来抓取全文。这样除了可以把非全文的FEED变成全文输出外,还可以处理根本没有FEED输出的网页。(不过有很多网页需要处理一下GB2312和UNICODE转换。).而且这样还有一个最大的好处,就是不用建立自己的服务器。
下面两个FEED 就是用这种办法生成的。
http://feeds.feedburner.com/wenxuecity_news
http://feeds.feedburner.com/boxun_headline
可以用GOOGLE READER 来读取它们。也不失为一种间接翻越G/F/W 的办法。
2010年4月18日 11:49 | # | 引用
Ruan YiFeng 说:
全文Feed默认只有4个条目,下载代码后,你可以自己修改这个值。
2010年4月18日 17:42 | # | 引用
坏坏鼠 说:
不懂编程只会用GR的文科生飘过~~~
ps:阮老师的这篇文章GR里也只是显示标题,所以漂洋过海地过来了(牛博编辑的那个频道,已经将你的博客订阅了呵O(∩_∩)O)~~
2010年4月19日 00:36 | # | 引用
111 说:
是这样的,丢失了好多,时效性好差
2010年4月19日 10:25 | # | 引用
kuber 说:
想请教一下你怎么修改规则来全文输出新浪网rss的, 我也碰到几个Feed,缺省的配置不能正确处理.
另外我建议设立一个地方大家可以交流一下脚本不能处理的feed,以及修改的方法, 这样各人不用重复浪费时间了.
2010年4月19日 10:57 | # | 引用
111 说:
下载了lz的代码,发布到网站上,功能可用了。rss数量自己设置就好。
杯具的是网站只有内网地址,gr不认生成的feed地址。
只能CS订阅,不喜。
2010年4月19日 11:23 | # | 引用
lietlie 说:
http://mrss.dokoda.jp/
虽然是小鬼子的网站,但是是我找到的能够全文Feed最好的在线工具了,和LZ推荐的网站相比,可以输出所有项目,而没有4条目的限制,当然也不必自己搭建服务器,日文内容很简单,如果使用的是FF或Chrome浏览器还可以利用Google的自动翻译功能将大致内容翻译为中文(FF利用Google Toolbar)——其实即使不翻译一样很容易使用。
2010年4月19日 12:31 | # | 引用
Ruan YiFeng 说:
新浪的内容容器,有一个比较怪的ID名。只要搜索这个字符串,就能提取内容了。
最终,你还是需要读readability.php的代码,只要读懂了,我觉得任何页面都能提取。
2010年4月19日 12:58 | # | 引用
诗沐 说:
哇 源码写得相当清爽啊~注释习惯很棒
2010年4月19日 15:02 | # | 引用
xangd 说:
有人在appspot上部署了一个python的port
http://andrewtrusty.appspot.com/readability/
这个没有4篇post的限制
2010年4月19日 17:12 | # | 引用
neotrue 说:
很好用,谢谢!
2010年4月20日 23:01 | # | 引用
harvey 说:
博主,作者把1.5版本放出来了,
可否再麻烦你打包一下,我bazzar一直不成功
2010年6月 1日 19:04 | # | 引用
Ruan YiFeng 说:
已经加上去了,:-)
2010年6月 3日 13:04 | # | 引用
张治国 说:
博主,全文Feed默认只有4个条目,下载代码后,修改哪段代码可以改变这个值啊,config-sample.PHP中的数值吗?我是新手,希望博主指点一下,谢谢。
2010年8月 5日 01:12 | # | 引用
felix 说:
看不懂readability,不知道博主能否提供一下过滤页面上的干扰字符的方法
2011年1月12日 12:28 | # | 引用
闵曙辉 说:
提一个小意见,有的PHP环境中会有警告信息:“Creating default object from empty value”
在makefulltextfeed.php的第73行(2.1版代码),需要在这里加一行
$options = new stdClass();
对$options进行初始化,这样更加规范
2014年12月 3日 19:31 | # | 引用
闵曙辉 说:
源码现在已经不在launchpad.net上了,现在托管在Bitbucket上
http://code.fivefilters.org/
现在版本已经变化好大了啊
2014年12月 4日 17:39 | # | 引用
antior 说:
这个网站现在在卖授权,而且很贵。。。
2017年2月15日 17:21 | # | 引用