资源描述:
《htmlparser使用指南》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、需要做一个垂直搜索引擎,比较了nekohtml和htmlparser的功能,尽管nekohtml在容错性、性能等方面的口碑好像比htmlparser好(htmlunit也用的是nekohtml),但感觉nekohtml的测试用例和文档都比htmlparser都少,而且htmlparser基本上能够满足垂直搜索引擎页面处理分析的需求,因此先研究一下htmlparser的使用,有空再研究nekohtml和mozillahtmlparser的使用。 html的功能还是官方说得最为清楚,引用 HTM
2、LParserisaJavalibraryusedtoparseHTMLineitheralinearornestedfashion.Primarilyusedfortransformationorextraction,itfeaturesfilters,visitors,customtagsandeasytouseJavaBeans.Itisafast,robustandwelltestedpackage. Thetwofundamentaluse-casesthatarehandledbyt
3、heparserareextractionandtransformation(thesynthesesuse-case,whereHTMLpagesarecreatedfromscratch,isbetterhandledbyothertoolsclosertothesourceofdata).Whilepriorversionsconcentratedondataextractionfromwebpages,Version1.4oftheHTMLParserhassubstantialimprov
4、ementsintheareaoftransformingwebpages,withsimplifiedtagcreationandediting,andverbatimtoHtml()methodoutput. 研究的重点还是extraction的使用,有空再研究transformation的使用。1、htmlparser对html页面处理的数据结构[color=blue]如图所示,HtmlParser采用了经典的Composite模式,通过RemarkNode、TextNode、TagNod
5、e、AbstractNode和Tag来描述HTML页面各元素。 *org.htmlparser.Node: Node接口定义了进行树形结构节点操作的各种典型操作方法,包括: 节点到html文本、text文本的方法:toPlainTextString、toHtml 典型树形结构遍历的方法:getParent、getChildren、getFirstChild、getLastChild、getPreviousSibling、getNextSibling、getText 获取节点对应的树
6、形结构结构的顶级节点Page对象方法:getPage 获取节点起始位置的方法:getStartPosition、getEndPosition Visitor方法遍历节点时候方法:accept(NodeVisitorvisitor) Filter方法:collectInto(NodeListlist,NodeFilterfilter) Object方法:toString、clone *org.htmlparser.nodes.AbstractNode: AbstractNode是
7、形成HTML树形结构抽象基类,实现了Node接口。 在htmlparser中,Node分成三类: RemarkNode:代表Html中的注释 TagNode:标签节点。 TextNode:文本节点 这三类节点都继承AbstractNode。 *org.htmlparser.nodes.TagNode: TagNode包含了对HTML处理的核心的各个类,是所有TAG的基类,其中有分为包含其他TAG的复合节点ComositeTag和不包含其他TAG的叶子节点Tag。 复合
8、节点CompositeTag: AppletTag,BodyTag,Bullet,BulletList,DefinitionList,DefinitionListBullet,Div,FormTag,FrameSetTag,HeadingTag, HeadTag,Html,LabelTag,LinkTag,ObjectTag,ParagraphTag,ScriptTag,SelectTag,Span,StyleTag,TableColumn