zoukankan      html  css  js  c++  java
  • Jsoup 解析 HTML

    Jsoup 文档

    方法

    示例:

    String html = "<p>An <a href='http://example.com/'><b>example</b></a> link.</p>";
    Document doc = Jsoup.parse(html);//解析HTML字符串返回一个Document实现
    Element link = doc.select("a").first();//查找第一个a元素
    
    String text = doc.body().text(); // "An example link"//取得字符串中的文本
    String linkHref = link.attr("href"); // "http://example.com/"//取得链接地址
    String linkText = link.text(); // "example""//取得链接地址中的文本
    
    String linkOuterH = link.outerHtml(); 
        // "<a href="http://example.com"><b>example</b></a>"
    String linkInnerH = link.html(); // "<b>example</b>"//取得链接内的html内容
    

    说明

    上述方法是元素数据访问的核心办法。此外还其它一些方法可以使用:

    这些访问器方法都有相应的setter方法来更改数据.

    参见


     

    jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。请参考:http://jsoup.org/
    
        jsoup的主要功能如下:
    
         从一个URL,文件或字符串中解析HTML;
    
         使用DOM或CSS选择器来查找、取出数据;
    
         可操作HTML元素、属性、文本;
    
         jsoup是基于MIT协议发布的,可放心使用于商业项目。
    
        下载和安装:
    
         maven安装方法:
    
          把下面放入pom.xml下
    
           <dependency>
    
             <!-- jsoup HTML parser library @ http://jsoup.org/ -->
    
            <groupId>org.jsoup</groupId>
    
            <artifactId>jsoup</artifactId>
    
            <version>1.5.2</version>
    
           </dependency>
    
         用jsoup解析html的方法如下:
    
           解析url html方法
    
    
    
    Document doc =Jsoup.connect("http://example.com") .data("query","Java")   .userAgent("Mozilla")   .cookie("auth","token")   .timeout(3000)   .post();
    
    
         从文件中解析的方法:
    
    
    
    
    
    File input =newFile("/tmp/input.html");Document doc =Jsoup.parse(input,"UTF-8","http://example.com/");
    
    
    
    
     类试js  jsoup提供下面方法:
    
    
    
    getElementById(String id) 用id获得元素
    
    getElementsByTag(String tag) 用标签获得元素
    
    getElementsByClass(String className) 用class获得元素
    
    getElementsByAttribute(String key)  用属性获得元素
    
    
    
    同时还提供下面的方法提供获取兄弟节点:
    
    siblingElements(), firstElementSibling(), lastElementSibling();nextElementSibling(), previousElementSibling()
    
    用下面方法获得元素的数据:
    
    
    
    attr(String key)  获得元素的数据 
    
    attr(String key, String value) t设置元素数据 
    
    attributes() 获得所以属性 
    
    id(), className()  classNames() 获得id class得值
    
    text()获得文本值
    
    text(String value) 设置文本值 
    
    html() 获取html  
    
    html(String value)设置html
    
    outerHtml() 获得内部html 
    
    data()获得数据内容
    
    tag()  获得tag 和 tagName() 获得tagname
    
    
    
    操作html提供了下面方法:
    
    
    
    append(String html), prepend(String html)
    
    appendText(String text), prependText(String text)
    
    appendElement(String tagName), prependElement(String tagName)
    
    html(String value)
    
    通过类似jquery的方法操作html
    File input =newFile("/tmp/input.html");Document doc =Jsoup.parse(input,"UTF-8","http://example.com/");Elements links = doc.select("a[href]");// a with hrefElements pngs = doc.select("img[src$=.png]");   // img with src ending .pngElement masthead = doc.select("div.masthead").first();   // div with class=mastheadElements resultLinks = doc.select("h3.r > a");// direct a after h3
    
    
    支持的操作有下面这些:
    
    
    
    tagname 操作tag
    
    ns|tag ns或tag
    
    #id  用id获得元素 
    
    .class 用class获得元素
    
    [attribute] 属性获得元素
    
    [^attr]: 以attr开头的属性
    
    [attr=value] 属性值为value
    
    [attr^=value], [attr$=value], [attr*=value] 
    
    [attr~=regex]正则
    
    *:所以的标签 
    
    选择组合
    el#id el和id定位
    
    el.class e1和class定位
    
    el[attr] e1和属性定位
    
    ancestor child ancestor下面的child
    
    等等




  • 相关阅读:
    初级Springboot(一)
    java.lang.NoClassDefFoundError: Could not initialize class xxx
    Python requests.post嵌套多层json参数调用接口
    weblogic安装部署war包——windows
    angularJs 页面{{xxx}}使用三目运算符
    liunx下误删除/var目录下的empty文件,导致ssh连接不上
    Java判断一个时间是否在时间区间内
    centos7下配置免密码登录
    左连接去重(objec)
    java util.Date和sql.Date转换(时区转换)
  • 原文地址:https://www.cnblogs.com/james1207/p/3270937.html
Copyright © 2011-2022 走看看