zoukankan      html  css  js  c++  java
  • HtmlParser读书笔记

    1,Node有三种实现,分别是RemarkNode,用于保存注释。TextNode也很简单,就是用户可见的文字信息。TagNode是最复杂的,包含了HTML语言中的所有标

    签,而且可以扩展放入。TagNode包含两类,一类是简单的Tag,实际就是不能包含其他Tag的标签,只能做叶子节点。另一类是CompositeTag,就是可以包含其他Tag,是分支节点。

     

    2,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 ():取得这个Node在HTML页面中的起始位置

    int getEndPosition ():取得这个Node在HTML页面中的结束位置

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

    参考网址:http://allenj2ee.iteye.com/blog/222455

    3,Filter类

    Filter就是对于结果进行过滤,取得需要的内容。HTMLParser在org.htmlparser.filters包之内一共定义了16个不同的Filter,也可以分为几类。

    判断类Filter:

    TagNameFilter  HasAttributeFilter  HasChildFilter  HasParentFilter  HasSiblingFilter  IsEqualFilter

    逻辑运算Filter:

    AndFilter  NotFilter  OrFilter  XorFilter

    其他Filter:

    NodeClass  FilterStringFilter  LinkStringFilter  LinkRegexFilter  RegexFilter  CssSelectorNodeFilter

    所有的Filter类都实现了org.htmlparser.NodeFilter接口。这个接口只有一个主要函数:

    boolean accept (Node node)

    参考网址:http://blog.csdn.net/yanjun_xiaoli/article/details/4291865

  • 相关阅读:
    python3 TypeError: a bytes-like object is required, not 'str'
    Centos 安装Python Scrapy PhantomJS
    Linux alias
    Vim vimrc配置
    Windows下 Python Selenium PhantomJS 抓取网页并截图
    Linux sort
    Linux RSync 搭建
    SSH隧道 访问内网机
    笔记《鸟哥的Linux私房菜》7 Linux档案与目录管理
    Tornado 错误 "Global name 'memoryview' is not defined"
  • 原文地址:https://www.cnblogs.com/zhongwh/p/2575756.html
Copyright © 2011-2022 走看看