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的抽象函数。

原文地址:https://www.cnblogs.com/zuhaoran/p/6953496.html