HtmlParser的详解

来源:互联网 发布:java自动化测试脚本 编辑:程序博客网 时间:2024/05/18 04:58

常用的几个过滤器说明 

判断类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 自定义过滤器

2Tag类

         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的抽象函数。

0 0