天天看点

JAVA中使用Htmlparse解析HTML文档

import java.util.hashmap;  

import java.util.map;  

import org.htmlparser.node;  

import org.htmlparser.nodefilter;  

import org.htmlparser.parser;  

import org.htmlparser.tags.linktag;  

import org.htmlparser.util.nodelist;  

import com.yao.http.httprequester;  

import com.yao.http.httprespons;  

/** 

 * java中使用htmlparse解析html文档,使用htmlparse遍历出html文档的所有超链接(<a>标记)。 

 *  

 * @author yymmiinngg 

 */  

public class test {  

    public static void main(string[] args) {  

        try {  

/* 首先我们先使用httprequester类和httprespons类获得一个http请求中的数据(html文档)。 可以从(http://download.csdn.net/source/321516)中下载htmlloader,该库中有上述类;或从我的《java发送http请求,返回http响应内容,实例及应用》一文中摘取上述两java类的代码。htmlparse可以从(http://download.csdn.net/source/321507)中下载 

*/  

            map<string, string> map = new hashmap<string, string>();  

            httprequester request = new httprequester();  

            httprespons hr = request.sendget("http://www.baidu.com");  

            parser parser = parser.createparser(hr.getcontent(), hr  

                    .getcontentencoding());  

            try {  

                // 通过过滤器过滤出<a>标签  

                nodelist nodelist = parser  

                        .extractallnodesthatmatch(new nodefilter() {  

                            //实现该方法,用以过滤标签  

                            public boolean accept(node node) {  

                                if (node instanceof linktag)//<a>标记  

                                    return true;  

                                return false;  

                            }  

                        });  

                // 打印  

                for (int i = 0; i < nodelist.size(); i++) {  

                    linktag n = (linktag) nodelist.elementat(i);  

                    system.out.print(n.getstringtext() + " ==>> ");  

                    system.out.println(n.extractlink());  

                }  

            } catch (exception e) {  

                e.printstacktrace();  

            }  

        } catch (exception e) {  

            e.printstacktrace();  

        }  

    }  

}  

上一篇: SQL 语句大全
下一篇: HTTP协议