今天在FriendFeed上看到有人贴了来自IMDb.cn的北美票房排行榜之类的feed(这里,还有这里),顺手找了找了原版IMDb.com的相关材料,在这个页面提供了每周更新的几个统计表——地球人都知道IMDb.com并不提供RSS feeds,但这并不是说热爱Google Reader的我们就没招了,哼哼,我们正好玩玩强大滴mashup——看看下面这个页面,我们的目标就是把红框那个区域挖出来,然后做成一个RSS feed:

对这个页面的源码稍微研究一下就知道,这不是一个很容易下手的页面,所以我们需要想办法先做个数据抽取的工作——我们有现成的、免费的工具,Google Docs的Spreadsheet是做这事的最好帮手。初始化一个spreadsheet,在任何格子填入:

=ImportHtml("http://www.imdb.com/chart/", "table", 12)

ImportHtml 是Google Spreadsheet最有价值的函数,它的第一个参数是个页面,第二个参数是你要找的tag名,第三个参数是这种tag的元素中你需要的那个的序号。上面这个式子会打开我们那个目标页面,把第13个 table 节点拿出来,然后用其中的数据填充spreadsheet的格子。回车,效果如下:

然后将其发布出来,以便通过URL直接访问,一般这种发布出来的URL是这个样子:

http://spreadsheets.google.com/pub?key=p3bVvdNBE8zMcYFRqirc8fg

我们可以看到,这里不知道为啥,有些格子对错了,但是不要紧,我们只要那些有数据的格子。现在给这个URL增加几个后缀:

http://...p3bVvdNBE8zMcYFRqirc8fg&gid=0&output=csv&range=C3:E12

gid 参数指定输出表格第一页(我们一共就一页);output 参数指定输出 csv 格式(方便后面使用);range 参数指定输出的数据区域。试试这个新的URL输出的数据是不是正确——OK,数据准备完毕,下面是mashup。

打开Yahoo Pipes,新建一个pipe,用 Fetch CSV 工具来拿到上面我们准备的数据,然后用 LoopString Builder 工具把这些串成一个我们设计的字符串格式:

再用一个 Yahoo Search 工具,通过电影名字找到IMDb.com链接以及简单的描述,把这些内容分别命名为 titlelinkdescription,这样生成的内容可以被任何RSS reader正确的解析。

大功告成,现在我们可以看下成品,或者直接订阅RSS格式的输出

就这么简单的几个步骤,很明显,这套玩意儿是通用的,基本上任何页面的任何数据都可以这么干,而以关键字(这个例子中是影片名称)为中心很容易玩出很多其他的花样,有兴趣的自己去玩吧。Mashup and enjoy it!