HtmlParser学习笔记(一)-- 创建Parser对象
首先 ,介绍下HTMLParser的核心类,org.htmlparser.Parser类,这个类实际完成了对于HTML页面的分析工作。主要的构造函数如下:
public Parser (); public Parser (String resource) throws ParserException; public Parser (String resource, 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);
public static Parser createParser (String html, String charset);
常见的创建Parser的方法, 如下:
方法一:.通过url提取网络上的网页
//使用public Parser();构造函数 Parser parser = new Parser(); parser.setURL("http://www.yahoo.com.cn"); //使用public Parser (URLConnection connection) throws ParserException;构造函数 Parser parser = new Parser( (HttpURLConnection) (new URL("http://www.baidu.com")).openConnection() ); org.htmlparser.http.ConnectionManager manager = org.htmlparser.lexer.Page.getConnectionManager(); Parser parser = new Parser(manager.openConnection("http://www.baidu.com")); parser.setEncoding("GB2312");
方法二: 提取本地网页文件 (通过读文件把网页文件转化成字符串)
/使用静态方法 Parser parser=Parser.createParser(html,charset);
Node中包含的方法有几类:
对于树型结构进行遍历的函数,这些函数最容易理解:
Node getParent ():取得父节点
NodeList getChildren ():取得子节点的列表
Node getFirstChild ():取得第一个子节点
Node getLastChild ():取得最后一个子节点
Node getPreviousSibling ():取得前一个兄弟(不好意思,英文是兄弟姐妹,直译太麻烦而且不符合习惯,对不起女同胞了)
Node getNextSibling ():取得下一个兄弟节点
取得Node内容的函数:
String getText ():取得文本
String toPlainTextString():取得纯文本信息。
String toHtml () :取得HTML信息(原始HTML)
String toHtml (boolean verbatim):取得HTML信息(原始HTML)
String toString ():取得字符串信息(原始HTML)
Page getPage ():取得这个Node对应的Page对象
int getStartPosition ():取得这个Node在HTML页面中的起始位置
int getEndPosition ():取得这个Node在HTML页面中的结束位置
用于Filter过滤的函数:
void collectInto (NodeList list, NodeFilter filter):基于filter的条件对于这个节点进行过滤,符合条件的节点放到list中。
用于Visitor遍历的函数:
void accept (NodeVisitor visitor):对这个Node应用visitor
用于修改内容的函数,这类用得比较少:
void setPage (Page page):设置这个Node对应的Page对象
void setText (String text):设置文本
void setChildren (NodeList children):设置子节点列表
其他函数:
void doSemanticAction ():执行这个Node对应的操作(只有少数Tag有对应的操作)
Object clone ():接口Clone的抽象函数。