今天在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 工具来拿到上面我们准备的数据,然后用 Loop 和 String Builder 工具把这些串成一个我们设计的字符串格式:
再用一个 Yahoo Search 工具,通过电影名字找到IMDb.com链接以及简单的描述,把这些内容分别命名为 title、link 和 description,这样生成的内容可以被任何RSS reader正确的解析。
大功告成,现在我们可以看下成品,或者直接订阅RSS格式的输出。
就这么简单的几个步骤,很明显,这套玩意儿是通用的,基本上任何页面的任何数据都可以这么干,而以关键字(这个例子中是影片名称)为中心很容易玩出很多其他的花样,有兴趣的自己去玩吧。Mashup and enjoy it!

November 16th, 2008 at 8:39 pm
类似的步骤好像不适合imdb.cn,
在雅虎搜索中,搜索不到,中文电影名称的内容在imdb.cn里,
- 不知道有没有别的什么办法,
November 16th, 2008 at 8:54 pm
类似方法好像对imdb.cn不适用,yahoo search 中搜索不到中文内容Restricted to imdb.cn
We did not find results for: 马达加斯加2:逃往非洲. Try the suggestions below or type a new query above.
Restricted to http://www.imdb.cn/ domain/site(s)
November 16th, 2008 at 8:57 pm
看来只能在别的页面中获取影片的description
November 16th, 2008 at 10:33 pm
有个变通的办法,找到英文站点的地址之后,把“imdb.com”换成“imdb.cn”,然后在中文页面找“剧情介绍”就行了。例如Madagascar 2的页面找出来是: http://www.imdb.com/title/tt0479952/
换成: http://www.imdb.cn/title/tt0479952/ 就是对应的中文页面。
November 18th, 2008 at 1:10 pm
高人中的牛人啊,收藏了