html parser

来源:互联网 发布:单片机控制led灯程序 编辑:程序博客网 时间:2024/05/01 07:22

html parser 是一个解析html的java框架 ,可以将你需要的内容从网页中提取出来,可以用来做一个网页爬虫或者简单的数据提取器。

框架主页:http://htmlparser.sourceforge.net/

 

看了下jtidy,也是和它一样的功能,但是html parser似乎更为简便,解析起来支持中文,编码方便。

学习资源:

http://www.ibm.com/developerworks/cn/java/l-html-parser/

http://allenj2ee.javaeye.com/blog/222454

http://www.blogjava.net/amigoxie/archive/2008/01/18/176200.html

 

html parser主要使用一个parser来解析网页,通过过滤器filter或者visitor来访问所需要的节点,目前使用的版本为1.6。

html parser是使用递归的方式来层级选取节点,所以在使用过滤器和visitor的时候需要添加true来支持子元素的查询,否则默认就只查询当前节点。

 

 

Parser parser = new Parser("http://www.baidu.com");

 

这是最简单的代码,通过parser的构造函数传入一个需要解析的网址,生成一个parser对象。

通过parser对象,就可以解析出一系列的元素。

 

filter:

filter是过滤器,我们使用不同的过滤器来获得想要的不同结果。

所有的过滤器实现与NodeFilter接口。

其中最常用的为css选择器过滤器,字符串选择过滤器,节点类型选择过滤器(NodeClassFilter),标签名过滤器(TagNameFilter)等。

使用方法为:

new一个过滤器

NodeFilter filter = new CssSelectorNodeFilter(".cp_kind");

将过滤器放入需要解析的parser或者nodeList中,true代表递归过滤,默认为false

 

NodeList allProductList = nodeList.extractAllNodesThatMatch(filter, true);

 

 

 

visitor:

visitor是一个标准访问器,用来定义为访问html页面的哪一部分。

例如最常用的htmlPage

 

复制代码
代码
HtmlPage visitor = new HtmlPage(parser);parser.visitAllNodesWith(visitor);String textInPage = visitor.getTitle();System.out.println(textInPage);//get bodyNodeList nodelist = visitor.getBody();System.out.print(nodelist.asString().trim());
复制代码

 

这样就可以将body分离出来

 

visitor默认继承与NodeVisitor

最常用的当然是htmlpage和tagfindingvisitor

 

其实html parser不难用,只是网页规则千变万化,解析起来有难度而已。

0 0
原创粉丝点击