可能我们在项目中常用Dom解析html,但是以下介绍的解析器可能会让你更简单、容易去解析html。另外javaweb中常用的dom解析是dom4j, 它在web领域中地王道;android中我们常用的是sax、pull。因为它们更省内存。因为不需要将整个XML树读入内存后再进行处理,而是通过输入流的方式进行,在这过程中会触发相关事件……..在这些事件回调中我们去做解析工作。
1、jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。据说它是基于MIT协议发布的。
在线文档:
http://www.osctools.net/apidocs/apidoc?api=jsoup-1.6.3
;
http://jsoup.org/
jsoup的主要功能如下:
- 从一个URL,文件或字符串中解析HTML;
- 使用DOM或CSS选择器来查找、取出数据;
- 可操作HTML元素、属性、文本;
示例代码:
Document doc = Jsoup.parse(input, “UTF-8″, ”
http://www.dangdang.com
“);
Element content = doc.getElementById(“content”);
Elements links = content.getElementsByTag(“a”);
for (Element link : links) {
String linkHref = link.attr(“href”);
String linkText = link.text();
}
2、htmlparser是一个纯的java写的html解析的库,它不依赖于其它的java库文件,主要用于改造或提取html。它能超高速解析html,而且不会出错。现在htmlparser最新版本为2.0。 据说htmlparser就是目前最好的html解析和分析的工具。 无论你是想抓取网页数据还是改造html的内容,用了htmlparser绝对会忍不住称赞。
在线文档:
http://www.osctools.net/apidocs/apidoc?api=HTMLParser
;
http://htmlparser.sourceforge.net/project-info.html
示例代码:
Parser parser = new Parser (”
http://www.dangdang.com
“);
NodeList list = parser.parse (null);
Node node = list.elementAt (0);
NodeList sublist = node.getChildren ();
System.out.println (sublist.size ());
当然,除了这两个还有NekoHTML、
JTidy、
HtmlCleaner
等等。另外在C++中的有htmlcxx。