在Ruby上,可以用近似 jQuery语法来解析DOM的好工具 -Hpricot

前阵子有一个需求,要从5、60个网页档中,抓出需要的资讯。

我稍稍看了一下这些网页档原始码,结构大概是大同小异,而且需要的资料,都有使用id来标示,因此我想于其直接去parse文字,不如透过DOM来抓会更简单。

虽然我最熟的语言该算是JavaScript,但是由于这些网页都已经另存成档案,而且parsing完成的资料又要写入到文字档中,所以我就想Ruby来做这个工作。

Ruby是一个很有趣的语言,虽然我的程式开发经验相当少,但是接触过Ruby之后,还是被他魔幻般的语法和自由度给吸引住。当初是想玩玩Rails才摸Ruby,没想到Rails没继续玩下去,但是Ruby却一直吸引着我。

前阵子还直接用Ruby+Active Record+Sqlite写了一个命令列底下的小应用程式,蛮好玩的。

言归正传,虽然喜欢Ruby,但是毕竟应用时间短,也不知道怎么运用它来parsing DOM,这时就想到iT邦上的Ruby达人CFC,果然MSN给他之后,得到一个漂亮的答案。


Hpricot
Hpricot是基于Tanaka Akira(田中明?)的HTree和John Resig的JQuery选取语法而来的HTML parser,因此可以用XQuery语法和CSS的选取语法来取得DOM元素。

要安装Hpricot的话,只要用Ruby的gem即可。

gem install Hpricot

安装好之后,在程式档的开头先引用进来

require 'rubygems'
require 'hpricot'

这样就可以开始使用Hpricot了。

举一个最简单的例子,假设我要开启的文件档名是位于project资料夹中的1.html,然后要parsing的资料有个id叫bookTItle,透过下面两行就解决了。

doc = open("project/1.html")

result = doc.at('#bookTitle').innerText()

此外,我也可以操作DOM,例如更改某个<span>的class。

(doc/"span.newCopy").set("class", "hotSale")

另外如果你熟XQuery的语法,在抓特定dom上也很好用。

几个相关的link供大家参考。

官方网站
Hpricot 引导文件
Hpricot API
ihower写的介绍(中文)(比这里写的专业多了 :p)


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章