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 ():取得下一個兄弟節點
取得
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對象