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();
}
}
}