1、标签节点,是种类最多的节点类型,上述Tag的具体节点类都是 3). TextNode:文本节点 HtmlParser学习笔记(一)- 创建Parser对象最近学习了下htmlparser,用这东西解析html还是蛮好用的,为了防止以后忘掉,现总结一下。首先 ,介绍下HTMLParser的核心类,org.htmlparser.Parser类,这个类实际完成了对于HTML页面的分析工作。主要的构造函数如下:public Parser ();public Parser (String resource) throws ParserException;public Parser (String res
2、ource, ParserFeedback feedback) throws ParserException;public Parser (URLConnection connection) throws ParserException;public Parser (URLConnection connection, ParserFeedback fb) throws ParserException;public Parser (Lexer lexer);public Parser (Lexer lexer, ParserFeedback fb);另外 ,该类还提供了一个静态方法, publi
3、c static Parser createParser (String html, String charset);对于大多数使用者来说,使用最多的是通过一个URLConnection或者一个保存有网页内容的字符串来初始化Parser,或者使用静态函数来生成一个Parser对象。ParserFeedback的代码很简单,是针对调试和跟踪分析过程的,一般不需要改变。而使用Lexer则是一个相对比较高级的话题,放到以后再讨论吧。 常见的创建Parser的方法, 如下:方法一:通过url提取网络上的网页 www.qyclass.org /使用public Parser();构造函数 Parser
4、parser = new Parser();parser.setURL(http:/www.qyclass.org);/使用public Parser (URLConnection connection) throws ParserException;Parser parser = new Parser( (HttpURLConnection) (new URL().openConnection() );org.htmlparser.http.ConnectionManager manager = org.htmlparser.lexer.Page.getConnectionManager()
5、;Parser parser = new Parser(manager.openConnection();parser.setEncoding(GB2312方法二:提取本地网页文件 (通过读文件把网页文件转化成字符串) /使用静态方法 Parser parser=Parser.createParser(html,charset);HtmlParserUtils.java公用类 该文件是自己编写的一个可复用的类,专门用来创建Parser对象,这里提供出来是为了方便后面的例子使用,代码如下:package org.qyclass;import java.io.IOException;import
6、.HttpURLConnection;import .MalformedURLException;import .URL;import org.htmlparser.Parser;import org.htmlparser.http.ConnectionManager;import org.htmlparser.lexer.Page;import org.htmlparser.util.ParserException;public class HtmlParserUtils public static Parser getParserWithUrlStr(String urlStr, Stri
7、ng encoding) Parser parser = new Parser(); try parser.setURL(urlStr); parser.setEncoding(encoding); catch(ParserException e) e.printStackTrace(); return null; return parser; public static Parser getParserWithUrlConn(String urlStr, String encoding) Parser parser = null; URL url = new URL(urlStr); Htt
8、pURLConnection urlConn = (HttpURLConnection) url.openConnection(); parser = new Parser(urlConn); return parser;catch (ParserException e1) e1.printStackTrace(); catch (MalformedURLException e1) catch (IOException e1) /推荐使用下面这个方法,效率比较高。public static Parser getParserWithUrlConn2(String urlStr, String e
9、ncoding) ConnectionManager manager = Page.getConnectionManager(); parser = new Parser(manager.openConnection(urlStr);catch (ParserException e) public static Parser createParser(String htmlContent, String encoding) Parser parser = Parser.createParser(htmlContent,encoding); HtmlParser学习笔记(二)- 遍历结点这次主要演示下,如何迭代一个Node结点的所有根子结点。 首先 ,先来看下需要解析的html页面的内容,该文件命名为htmlparser.html,详细内容如下所示(该页面以后将会多次使用):Html代码html xmlns=/www.w3.org/1999/xhtmlhead titleXX-title/headbody- 注意:换行符对解析的影响! -tabletrtd td-c1/td/tr td-c2/tabletd-a1td-a2td-b1td-b2/html 注 :由于页面采用的url方式访问,所以要先用myeclipse建立个空的web工程
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1