`
韩悠悠
  • 浏览: 827422 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

htmlparser关键包结构,类说明

 
阅读更多

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方式

2、org.htmlparser.beans

    对Visitor和Filter的方法进行了封装,定义了针对一些常用html元素操作的bean,简化对常用元素的提取操作。

    包括:FilterBean、HTMLLinkBean、HTMLTextBean、LinkBean、StringBean、BeanyBaby等。

3、org.htmlparser.nodes

    定义了基础的node,包括:AbstractNode、RemarkNode、TagNode、TextNode等。

4、org.htmlparser.tags

    定义了htmlparser的各种tag。

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

6、org.htmlparser.visitors

   定义了htmlparser所提供的各种visitor,主要通过visitAllNodesWith (NodeVisitor visitor)来对html页面元素进行遍历,包括:HtmlPage、LinkFindingVisitor、NodeVisitor、 ObjectFindingVisitor、StringFindingVisitor、TagFindingVisitor、 TextExtractingVisitor、UrlModifyingVisitor

 

7、org.htmlparser.parserapplications

   定义了一些实用的工具,包括LinkExtractor、SiteCapturer、StringExtractor、WikiCapturer,这几个类也可以作为htmlparser使用样例。

8、org.htmlparser.tests

   对各种功能的单元测试用例,也可以作为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) {
            logger.fatal(”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);
        logger.fatal(”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];
    logger.fatal(”testLinkBean() -url  is :” + url);
}

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics