HtmlParser 简介
htmlparser對html頁面處理的算法
?
主要是如下幾種方式
? 采用Visitor方式訪問Html
try {
??? Parser parser = new Parser();
??? parser.setURL(”http://www.google.com”);
??? parser.setEncoding(parser.getEncoding());
??? NodeVisitor visitor = new NodeVisitor() {
??????? public void visitTag(Tag tag) {
??????????? System.out.println (”testVisitorAll()? Tag name is :”
??????????????????? + tag.getTagName() + ” \n Class is :”
??????????????????? + tag.getClass());
??????? }
??? };
??? parser.visitAllNodesWith(visitor);
} catch (ParserException e) {
??? e.printStackTrace();
}
? 采用Filter方式訪問html
try {
??? NodeFilter filter = new NodeClassFilter(LinkTag.class);
??? Parser parser = new Parser();
??? parser.setURL(”http://www.google.com”);
??? parser.setEncoding(parser.getEncoding());
??? NodeList list = parser.extractAllNodesThatMatch(filter);
??? for (int i = 0; i < list.size(); i++) {
??????? LinkTag node = (LinkTag) list.elementAt(i);
??????? System.out.println(”testLinkTag() Link is :” + node.extractLink());
??? }
} catch (Exception e) {
??? e.printStackTrace();
}
? 采用org.htmlparser.beans方式
另外htmlparser 還在org.htmlparser.beans中對一些常用的方法進行了封裝,以簡化操作,例如:
Parser parser = new Parser();
LinkBean linkBean = new LinkBean();
linkBean.setURL(”http://www.google.com”);
URL[] urls = linkBean.getLinks();
for (int i = 0; i < urls.length; i++) {
??? URL url = urls[i];
??? System.out.println (”testLinkBean() -url? is :” + url);
}
?
Htmlparser關鍵包結構說明
??? htmlparser其實核心代碼并不多,好好研究一下其代碼,彌補文檔不足的問題。同時htmlparser的代碼注釋和單元測試用例還是很齊全的,也有助于了解htmlparser的用法。
?
3.1、org.htmlparser
??? 定義了htmlparser的一些基礎類。其中最為重要的是Parser類。
??? Parser是htmlparser的最核心的類,其構造函數提供了如下:Parser.createParser (String html, String charset)、 Parser ()、Parser (Lexer lexer, ParserFeedback fb)、Parser (URLConnection connection, ParserFeedback fb)、Parser (String resource, ParserFeedback feedback)、 Parser (String resource)
? 各構造函數的具體用法及含義可以查看其代碼,很容易理解。
? Parser常用的幾個方法:
??????? ? elements獲取元素
??? Parser parser = new Parser (”http://www.google.com”);
??? for (NodeIterator i = parser.elements (); i.hasMoreElements (); )
????? processMyNodes (i.nextNode ());
??????? parse (NodeFilter filter):通過NodeFilter方式獲取
??????? visitAllNodesWith (NodeVisitor visitor):通過Nodevisitor方式
??????? extractAllNodesThatMatch (NodeFilter filter):通過NodeFilter方式
3.2、org.htmlparser.beans
??? 對Visitor和Filter的方法進行了封裝,定義了針對一些常用html元素操作的bean,簡化對常用元素的提取操作。
??? 包括:FilterBean、HTMLLinkBean、HTMLTextBean、LinkBean、StringBean、BeanyBaby等。
3.3、org.htmlparser.nodes
??? 定義了基礎的node,包括:AbstractNode、RemarkNode、TagNode、TextNode等。
3.4、org.htmlparser.tags
??? 定義了htmlparser的各種tag。
3.5、org.htmlparser.filters
??? 定義了htmlparser所提供的各種filter,主要通過extractAllNodesThatMatch (NodeFilter filter)來對html頁面指定類型的元素進行過濾,包括:AndFilter、CssSelectorNodeFilter、HasAttributeFilter、HasChildFilter、HasParentFilter、HasSiblingFilter、IsEqualFilter、LinkRegexFilter、LinkStringFilter、NodeClassFilter、NotFilter、OrFilter、RegexFilter、StringFilter、TagNameFilter、XorFilter
3.6、org.htmlparser.visitors
?? 定義了htmlparser所提供的各種visitor,主要通過visitAllNodesWith (NodeVisitor visitor)來對html頁面元素進行遍歷,包括:HtmlPage、LinkFindingVisitor、NodeVisitor、ObjectFindingVisitor、StringFindingVisitor、TagFindingVisitor、TextExtractingVisitor、UrlModifyingVisitor
?
3.7、org.htmlparser.parserapplications
?? 定義了一些實用的工具,包括LinkExtractor、SiteCapturer、StringExtractor、WikiCapturer,這幾個類也可以作為htmlparser使用樣例。
3.8、org.htmlparser.tests
?? 對各種功能的單元測試用例,也可以作為htmlparser使用的樣例。
轉載于:https://www.cnblogs.com/answeryi/archive/2009/11/02/1594543.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的HtmlParser 简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是Windows Service应用
- 下一篇: 解决 OCFS2 不能自动挂载 提示 o