@ 2008.11.15 , 20:11

如何用 Yahoo Pipes 制作牛博网全文 RSS

近来我求助于 shawn 大师的次数明显增多,而且都是以“你创作,我共用”的伟大口号来发动他。shawn 同学说,啥时候你也创作一回啊?小看 me 的后果是狠严重的,今天我就解决了 shawn 认为 pipe 做不到的全文 feed 输出。

一、路过的同学可直接订阅已经搞好的牛博全文 RSS feed

二、有兴趣自己烧录其它网站全文 feed 的,可以参考下面的具体方法

1、在 Yahoo Pipes 里新建一个 pipe
拖入一个 Fetch Feed 模块,输入牛博最新文章的 rss 地址
拖入一个 Loop 模块,与 Fetch Feed 连接

2、拖一个 Fetch Page 模块进入 Loop
设置 URL 为 item.link
读取内容从 <div class="EntryBody"> 到 </div>
指定所有结果为 item.temp

3、拖入一个 Rename 模块,与 Loop 连接
将 item.temp.0.content 重命名为 content:encoded

4、将 Rename 连接到 Pipe Out,保存

然后将 pipe 好的 rss 烧录到 feedsky(主要是方便收藏,不会往里面加小广告)

下面是 pipe 界面截图,一目了然:
[-]

debug 的结果里可以看到全文部分出现鸟:
[-]

# 以及这个做好的 pipe 已经公布,大家可以 clone 了自己研究。

# 注:除了大动干戈折腾 Pipes,可以参考 fisio 写的在 Google Reader 里用 GreaseMonkey 脚本方式抓取全文的文章《RSS feed 不输出全文?一样搞定你》,也可以看看雾之大陆所说在 NewsFox 扩展里用 XPath 方式直接读全文设置方法《Newsfox搞定RSS全文输出》。其实两者都是利用 XPath,但是 GR 里的脚本只能做到临时单篇载入,每次要小等一下;而 NewsFox 里虽然能一次性读取但每次更新源的时候则要等老半天。所以,最佳的解决方法还是回归本源,烧一个全文 Feed 出来,这也是我折腾 Yahoo Pipes 的原动力。

[-]

#

三、如果有牛博网或者其它不提供全文 RSS 的网站技术人员看到这篇,也给你们提供如何屏蔽 pipe 的方法:
1、在服务器端直接屏蔽“Yahoo Pipes”爬虫。
2、在自己网站的 RSS feed 里添加一个 noindex 的 meta 标签:
<meta xmlns="http://pipes.yahoo.com" name="pipes" content="noindex" />
3、发邮件到 pipes-optout@yahoo-inc.com,告诉他们你希望不被 Pipe 的 RSS 地址。

# sein 啰嗦一下:当然魔高一尺道高一丈,不提供全文 RSS 的站方可能基于节省带宽之类的理由,而且全文 RSS 的确给恶意克隆/镜像者提供便利。有些 RSS 烧录服务比如 feedburner 是禁止把 pipe 地址作为 rss 源的,国内的 feedsky 目前还没有这么做。不过即使 feedsky 也封杀 pipe 了,大家还可以选择 feedcat 或者更多第三方服务…… 很麻烦,其实提供一个全文 RSS feed 不好么?利人利己皆大欢喜,我们也不用需要让极其占用服务器资源的 pipe 爬虫来骚扰你了。

# sein 注:理论上用 Yahoo Pipes 可以搞定任何不输出 RSS 全文甚至不提供 RSS 网站的 全文 feed,愿意折腾的同学可以本文的方法,原则上我们不再提供其它网站的 Pipe 版 RSS。

赞一个 (1)