1. 程式人生 > >HtmlParser學習筆記(一)-- 創建Parser對象

HtmlParser學習筆記(一)-- 創建Parser對象

nco 修改 英文 text aid 意思 charset 網頁 第一個

首先 ,介紹下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的抽象函數。

HtmlParser學習筆記(一)-- 創建Parser對象