zoukankan      html  css  js  c++  java
  • HtmlParser学习笔记(一)-- 创建Parser对象

     首先 ,介绍下HTMLParser的核心类,org.htmlparser.Parser类,这个类实际完成了对于HTML页面的分析工作。主要的构造函数如下:

    public Parser ();  
    public Parser (String resource) throws ParserException;  
    public Parser (String resource, ParserFeedback feedback) throws ParserException;  
    public Parser (URLConnection connection) throws ParserException;  
    public Parser (URLConnection connection, ParserFeedback fb) throws ParserException;  
    public Parser (Lexer lexer);  
    public Parser (Lexer lexer, ParserFeedback fb);  
    

      

    public static Parser createParser (String html, String charset);  
    

      

    常见的创建Parser的方法, 如下:

       方法一:.通过url提取网络上的网页

    //使用public Parser();构造函数  
    Parser parser = new Parser();  
    parser.setURL("http://www.yahoo.com.cn");  
      
    //使用public Parser (URLConnection connection) throws ParserException;构造函数  
    Parser parser = new Parser(  
                  (HttpURLConnection) (new URL("http://www.baidu.com")).openConnection()  
                        );  
      
    org.htmlparser.http.ConnectionManager manager = org.htmlparser.lexer.Page.getConnectionManager();  
    Parser parser = new Parser(manager.openConnection("http://www.baidu.com"));  
    parser.setEncoding("GB2312");  
    

       方法二: 提取本地网页文件 (通过读文件把网页文件转化成字符串)

    /使用静态方法  
    Parser parser=Parser.createParser(html,charset);  
    

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

  • 相关阅读:
    js函数——倒计时模块+无缝滚动
    一步步编写avalon组件02:分页组件
    mvc5+ef6+Bootstrap 项目心得--身份验证和权限管理
    只用css实现“每列四行,加载完一列后数据自动填充到下一列”的效果
    某考试 T1 arg
    vijos 2035 奇数偶数与绚丽多彩的数
    bzoj 5093: [Lydsy1711月赛]图的价值
    [HEOI2016/TJOI2016]求和
    [TJOI2015]概率论
    Codeforces 616 E Sum of Remainders
  • 原文地址:https://www.cnblogs.com/zuhaoran/p/6953496.html
Copyright © 2011-2022 走看看