首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > CSS >

运用HTMLparser解析HTML

2012-07-02 
使用HTMLparser解析HTMLhttp://express.ruanko.com/ruanko-express_44/technologyexchange6.htmlhtmlparse

使用HTMLparser解析HTML

http://express.ruanko.com/ruanko-express_44/technologyexchange6.html

htmlparser是一个纯的java写的html解析的库,它不依赖于其它的java库文件,主要用于改造或提取html。Htmlparser相对于其他html解析工具有较好的优势,它能超高速解析html,而且不会出错。

我用一段代码简单介绍htmlparser的运用方法。

HtmlParser采用了经典的Composite模式,通过RemarkNode、TextNode、TagNode、AbstractNode和Tag来描述HTML页面各元素。

org.htmlparser.Node:

  • 节点到html文本、text文本的方法:toPlainTextString、toHtml
  • 典型树形结构遍历的方法:getParent、getChildren、getFirstChild、getLastChild、getPreviousSibling、getNextSibling、getText
  • 获取节点对应的树形结构结构的顶级节点Page对象方法:getPage
  • 获取节点起始位置的方法:getStartPosition、getEndPosition
  • Visitor方法遍历节点时候方法:accept (NodeVisitor visitor)
  • Filter方法:collectInto (NodeList list, NodeFilter filter)
  • Object方法:toString、clone

    org.htmlparser.nodes.AbstractNode:

    AbstractNode是形成HTML树形结构抽象基类,实现了Node接口。

    在htmlparser中,Node分成三类:

    • RemarkNode:代表Html中的注释
    • TagNode:标签节点
    • TextNode:文本节点

      这三类节点都继承AbstractNode。

      org.htmlparser.nodes.TagNode:

      TagNode包含了对HTML处理的核心的各个类,是所有TAG的基类,其中有分为包含其他TAG的复合节点ComositeTag和不包含其他TAG的叶子节点Tag。

      复合节点CompositeTag:

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

        org.htmlparser.beans

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

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

        org.htmlparser.nodes

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

        org.htmlparser.tags

        定义了htmlparser的各种tag。

        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。

        org.htmlparser.visitors

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

        org.htmlparser.parserapplications

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

        org.htmlparser.tests

        对各种功能的单元测试用例,也可以作为htmlparser使用的样例。

热点排行