zoukankan      html  css  js  c++  java
  • HtmlParser的详解

    常用的几个过滤器说明 

    判断类Filter:

    TagNameFilter 根据Tag的名字进行过滤

                      HasAttributeFilter 可以匹配出包含制定名字的属性,或者制定属性为指定值的节点

                      HasChildFilter 是返回有符合条件的子节点的节点,需要另外一个Filter作为过滤子节点的参数。

                      HasParentFilter 与HasChildFilter类似。

                      HasSiblingFilter 与HasChildFilter类似。

    逻辑运算Filter

                      AndFilter 是结合几种过滤条件的'与'过滤器

                      NotFilter 是结合几种过滤条件的'或'过滤器 

                      OrFilter 是结合几种过滤条件的'或'过滤器 

    其他Filter:

                     NodeClassFilter 根据已定义的标签类获取节点

                     StringFilter 这个Filter用于过滤显示字符串中包含指定内容的标签节点。注意是可显示的字符串,不可显示的字符串中的内容(例如注释,链接等等)不会被显示

                     LinkStringFilter 这个Filter用于判断链接中是否包含某个特定的字符串,可以用来过滤出指向某个特定网站的链接。

      LinkRegexFilter 这个Filter用于根据正则表达式匹配链接,可以用来过滤出指向某个特定网站的链接。

                     RegexFilter 根据正则表达式匹配节点.与LinkRegexFilter不同的是,LinkRegexFilter只在LinkTag中寻找匹配

    自定义:

    NodeFilter 自定义过滤器

    2 Tag类

             Remark:注释

             AppletTag:

             BaseHrefTag:

             Body Tag:"BODY";//getBody();内部调用额是toPlainTextString();

             Bullet:"LI"

             BulletList:"UL","OL"

             CompositeTag:

             DefinitionList:"DL"

             DefinitionListBullet:"DD","DT"

             Div:"DIV"

             DoctypeTag:“!DOCTYPE"

             FormTag:

             FrameSetTag:

             FrameTag:

             HeadingTag:"H1","H2","H3","H4","H5","H6"

             HeadTag:"HEAD"

             Html:"HTML"

             ImageTag:

             InputTag:"INPUT"

             JspTag:"%","%=","%@"

             LabelTag:"LABEL"

            

             LinkTag:

             MetaTag:

             ObjectTag:

             OptionTag:

             ParagraphTag:"P"

             ProcessingInstructionTag:"?"

             ScriptTag:

             SelectTag:"SELECT"

             Span:"SPAN"

             StyleTag:"STYLE"

              TableColumn:"TD"

              TableHeader:"TH"

              TableRow:"TR"

              TableTag:"TABLE"

              TagNode:

              TextareaTag:"TEXTAREA"

              TitleTag:"TITLE"

              TextNode:文本


    3 Node中包含的方法有几类:


    对于树型结构进行遍历的函数,这些函数最容易理解:
    Node 
    getParent ()取得父节点
    NodeList 
    getChildren ()取得子节点的列表
    Node 
    getFirstChild ()取得第一个子节点
    Node 
    getLastChild ()取得最后一个子节点
    Node 
    getPreviousSibling ()取得前一个兄弟(不好意思,英文是兄弟姐妹,直译太麻烦而且不符合习惯,对不起女同胞了)
    Node 
    getNextSibling ()取得下一个兄弟节点
    取得Node内容的函数:
    String 
    getText ()取得文本
    String 
    toPlainTextString()取得纯文本信息
    String 
    toHtml () 取得HTML信息(原始HTML
    String 
    toHtml (boolean verbatim)取得HTML信息(原始HTML
    String 
    toString ()取得字符串信息(原始HTML
    Page 
    getPage ()取得这个Node对应的Page对象
    int 
    getStartPosition ()取得这个NodeHTML页面中的起始位置
    int 
    getEndPosition ()取得这个NodeHTML页面中的结束位置
    用于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的抽象函数。

  • 相关阅读:
    解决 el-table在ie11中默认状态下不是百分百展开的问题
    在vue中使用lexible.js 通过props传的style样式无法转换成rem
    解决 el-select 与 el-radio 组合字体发生闪烁问题
    解决element生成的下拉菜单,不在父级之下,而是在body之下,通过父级控制该下拉菜单的样式,达到不跟别的地方冲突的目的
    解决nvm use提示切换node版本成功,实际却没有切换过对应版本
    vue-element-admin安装失败的问题
    今天转正了,感谢博客园让我找到工作!
    electron-vue中点击按钮,实现打开程序目录里面的某个文件
    项目实战---模拟站酷网站
    vue实现选项卡切换效果
  • 原文地址:https://www.cnblogs.com/t0404/p/10290973.html
Copyright © 2011-2022 走看看