使用html parser

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)等。

2010031414105826.png

使用方法为:

new一个过滤器

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

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

 

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

 

 

 

visitor:

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

例如最常用的htmlPage

 

ContractedBlock.gif ExpandedBlockStart.gif 代码
 
   
HtmlPage visitor = new HtmlPage(parser);

parser.visitAllNodesWith(visitor);

String textInPage
= visitor.getTitle();
System.out.println(textInPage);

// get body
NodeList nodelist = visitor.getBody();
System.out.print(nodelist.asString().trim());

 

这样就可以将body分离出来

 

visitor默认继承与NodeVisitor

2010031414245048.png

最常用的当然是htmlpage和tagfindingvisitor

 

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

转载于:https://www.cnblogs.com/xiziyin/archive/2010/03/14/1685487.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值