zoukankan      html  css  js  c++  java
  • 页面解析工具:HtmlParser学习

    HtmlParser的数据组织分析:

    Node是形成树结构表示HTML的基础,所有的数据表示都是接口Node的实现,Node定义了与页面树结构表达的页面Page对象,定义了获取父、子、兄弟节点的方法,定义了节点到对应的html文本的方法,定义了该节点对应的起至位置,定义了过滤方法,定义了Visitor访问机制。

     1 public interface Node
     2     extends
     3         Cloneable
     4 {
     5 
     6     String toPlainTextString ();
     7     String toHtml ();
     8     String toHtml (boolean verbatim);
     9     String toString ();
    10     void collectInto (NodeList list, NodeFilter filter);
    11     int getStartPosition ();
    12     void setStartPosition (int position);
    13     int getEndPosition ();
    14     void setEndPosition (int position);
    15     Page getPage ();
    16     void setPage (Page page);
    17     void accept (NodeVisitor visitor);
    18     Node getParent ();
    19     void setParent (Node node);
    20     NodeList getChildren ();
    21     void setChildren (NodeList children);
    22     Node getFirstChild ();
    23     Node getLastChild ();
    24     Node getPreviousSibling ();
    25     Node getNextSibling ();
    26     String getText ();
    27     void setText (String text);
    28     void doSemanticAction ()
    29         throws
    30             ParserException;
    31     Object clone ()
    32         throws
    33             CloneNotSupportedException;
    34 }

    AbstractNode是Node的一种具体的类实现,起到了构造树形结构的作用,除了同具体Node相关的accept方法,toString,toHtml,toPlainTextString方法以外,AbstractNode实现了大多基本的方法,使得它的子类,不用理会具体的树操作。
    Tag是具体分析的主要内容。Tag分成composite的Tag和不能包含其他Tag的简单Tag两类,其中前者的基类是CompositeTag,其子类包含BodyTag,Div,FrameSetTag,OptionTag,等27个子类;而简单Tag有BaseHrefTag、DoctypeTag,FrameTag,ImageTag,InputTag,JspTag,MetaTag,ProcessingInstructionTag这八类。

    Node分成三类:

    • RemarkNode:代表Html中的注释
    • TagNode:标签节点,是种类最多的节点类型,上述Tag的具体节点类都是TagNode的实现。
    • TextNode:文本节点



     

  • 相关阅读:
    CommonJS, AMD 和 RequireJS之间的关系(转载)
    ansible 变量详解
    python3 进行字符串、日期、时间、时间戳相关转换
    Openresty 进行限流的方法
    Openresty 进行路由系统设计
    elasticsearch的监控脚本
    Python模块安装
    Openresty 操作Cookie
    Openresty 源码安装脚本
    Linux 下使用umount强行卸载设备
  • 原文地址:https://www.cnblogs.com/chp008/p/1511031.html
Copyright © 2011-2022 走看看