Jsoup 使用

Jsoup


Jsoup 是一款轻量高效的 html 文档解析工具,可类比 xml 中的 dom4jjdom

Jsoup中的基本类


  • Document

Html 整个文档在内容中的数据结构,继承 Element

  • Element

标记元素的数据结构 ,继承 Node

  • Elements

Element 的集合,继承 ArrayList

  • Node

节点,是 Element,Document 的超类,定义了节点的基本方法

类 Jsoup 解析 HTML 文档的静态方法


Jsoup 使用_第1张图片
parse method

jsoup 对于获取 html 元素有三种方式:

  1. 传统的基于元素 ID,CLASS,TAGNAME 获取匹配元素的方法;接口 doc.getElementByXXX()
  2. 基于 css selector 的元素定位获取方法;接口 doc.select(cssQueryString)
  3. 基于元素间的父子兄弟姊妹关系获取;e.parent()e.children()e.child(int index)e.siblingElements()e.firstElementSibling()lastElementSibling()nextElementSibling()previousElementSibling()

类Selector 的定位查询 HTML 元素方法


select method

html 中 selector == xml 中 xpath == database 中 select sql

点此详见 jsoup

  • 一个小栗子
  @Test
    public void test() throws IOException {
        File f = new File("resource/test.html");
        Document doc = Jsoup.parse(f,"utf-8");
        //JavaScript 链接
        Elements sLinks = doc.select("script[src]");
        for(Element e : sLinks){
            System.out.println("javascript link: "+e.attr("src"));
        }
        hr();
        //javaScript 内容
        Elements sData = doc.select("script");
        for(Element e : sData){
            String data = e.data();
            if(data != null && data.trim().length() > 0){
                System.out.println("javascript data: "+data);
            }
        }
        hr();
        //css 链接
        Elements cLinks = doc.select("link[rel='stylesheet']");
        for(Element e : cLinks){
            System.out.println("css link: "+e.attr("href"));
        }
        hr();
        //css 内容
        Elements cData = doc.select("style");
        for(Element e : cData){
            String data = e.data();
            if(data != null && data.trim().length() > 0){
                System.out.println("css data:"+data);
            }
        }
        hr();
        //body 下 javascript 内容
        Elements bContent = doc.select("body");
        for(Element e : bContent){
            System.out.println("body javascript data: "+e.data());
        }
        hr();
        //body 下 所有文本内容(包含子孙标记的文本内容)
        System.out.println("body text: "+bContent.get(0).text());
        hr();
        //标记的所有链接地址
        Elements aHref = doc.select("a[href]");
        for(Element e : aHref){
            System.out.println("a href: "+e.attr("href"));
        }
        hr();
        //标记的以http协议的地址
        Elements aHttp = doc.select("a[href^=http]");
        for(Element e : aHttp){
            System.out.println("a http href : "+e.attr("abs:href"));
        }
        hr();
    }
    
    public static void hr(){
        System.out.println("---------------------------------------------------------------");
    }

你可能感兴趣的:(Jsoup 使用)