首页 > Java基础, 互联网技术 > htmlcleaner 使用说明

htmlcleaner 使用说明

2014年12月22日 发表评论 阅读评论

说明

在编程的时候或者写网络爬虫的时候,经常需要对html进行解析,抽取其中有用的数据。一款好的工具是特别有用的,能提供很多的帮助,网上有很多这样的工具,比如:htmlcleaner、htmlparser
经使用比较:感觉 htmlcleaner 比 htmlparser 好用,尤其是htmlcleaner 的 xpath特好用。
htmlcleaner 下载地址:htmlcleaner2_1.jar 源码下载:htmlcleaner2_1-all.zip
下面针对htmlcleaner进行举例说明,需求为:取出title,name=”my_href” 的链接,div的class=”d_1″下的所有li内容。

html-clean-demo.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >   
< html   xmlns = "http://www.w3.org/1999/xhtml "   xml:lang = "zh-CN"   dir = "ltr" >   
< head >   
    < meta   http-equiv = "Content-Type"   content = "text/html; charset=GBK" />   
    < meta   http-equiv = "Content-Language"   content = "zh-CN" />   
    < title > html clean demo </ title >   
</ head >   
< body >   
< div   class = "d_1" >   
    < ul >   
        < li > bar </ li >   
        < li > foo </ li >   
        < li > gzz </ li >   
    </ ul >   
</ div >   
< div >   
    < ul >   
        < li > < a   name = "my_href"   href = "1.html" > text-1 </ a > </ li >   
        < li > < a   name = "my_href"   href = "2.html" > text-2 </ a > </ li >   
        < li > < a   name = "my_href"   href = "3.html" > text-3 </ a > </ li >   
        < li > < a   name = "my_href"   href = "4.html" > text-4 </ a > </ li >   
    </ ul >   
</ div >   
</ body >   
</ html >

HtmlCleanerDemo.java

package com.chenlb;

import java.io.File;

import org.htmlcleaner.HtmlCleaner;
import org.htmlcleaner.TagNode;

/**
 * htmlcleaner 使用示例.
 *
 */
public class HtmlCleanerDemo {

    public static void main(String[] args) throws Exception {
        HtmlCleaner cleaner = new HtmlCleaner();

        TagNode node = cleaner.clean(new File("html/html-clean-demo.html"), "GBK");
        //按tag取.
        Object[] ns = node.getElementsByName("title", true);    //标题

        if(ns.length > 0) {
            System.out.println("title="+((TagNode)ns[0]).getText());
        }
        System.out.println("ul/li:");
        //按xpath取
        ns = node.evaluateXPath("//div[@class='d_1']//li");
        for(Object on : ns) {
            TagNode n = (TagNode) on;
            System.out.println("\ttext="+n.getText());
        }
        System.out.println("a:");
        //按属性值取
        ns = node.getElementsByAttValue("name", "my_href", true, true);
        for(Object on : ns) {
            TagNode n = (TagNode) on;
            System.out.println("\thref="+n.getAttributeByName("href")+", text="+n.getText());
        }
    }
}

cleaner.clean()中的参数,可以是文件,可以是url,可以是字符串内容。
比较常用的应该是evaluateXPath、 getElementsByAttValue、getElementsByName方法了。另外说明下,htmlcleaner 对不规范的html兼容性比较好。

除非注明,文章为IT热血青年原创,欢迎转载!转载请注明本文地址,谢谢。
本文地址:http://blog.itblood.com/htmlcleaner-instructions.html

  1. 2015年1月19日09:31 | #1

    htmlcleaner看起来挺容易用的

  2. 2015年2月4日15:48 | #2

    支持支持!

  3. 2015年2月9日10:49 | #3

    很不催的分享,赞一个

  1. 本文目前尚无任何 trackbacks 和 pingbacks.