zoukankan      html  css  js  c++  java
  • 160718、jsoup-1.8.1.jar操作html

    导入jsoup-1.8.1.jar
    import java.io.IOException;
    import org.jsoup.Connection;
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.nodes.Element;
    import org.jsoup.safety.Whitelist;
    import org.jsoup.select.Elements;
    /**
     * jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
    jsoup的主要功能如下:
    1. 从一个URL,文件或字符串中解析HTML;
    2. 使用DOM或CSS选择器来查找、取出数据;
    3. 可操作HTML元素、属性、文本;
    jsoup是基于MIT协议发布的,可放心使用于商业项目。
    注意:获取到了document对象之后,可以类似于操作dom一样来操作
     *
     */
    public class TestJsoup {
        /**
         * 文档输入
         * jsoup 可以从包括字符串、URL地址以及本地文件来加载HTML 文档,并生成Document 对象实例。
         * 获取指定HTML 文档指定的body
         * @throws IOException
         */
        public static Document getBody() throws IOException{
            /**方式一*/
            String html = "<html><head><title>开源中国社区</title></head>"
                    +"<body><p>这里是jsoup 项目的相关文章</p></body></html>";
            Document doc1 = Jsoup.parse(html);//直接从字符串中输入HTML 文档,有很多其他的构造方法可以使用
            System.out.println(doc1);
            /**方式二*/
            Document doc2 = Jsoup.connect("http://www.baidu.com/more/index.html")//
            .data("query", "java")//请求参数
            .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36")//设置User-Agent
            .cookie("auth", "token")//设置cookie
            .timeout(3000)//设置连接超时时间
            .post();//使用POST方法访问URL
            System.out.println(doc2);
            /**方式三*/
            Document doc3 = Jsoup.connect("http://www.baidu.com").get();//直接获取doc
            System.out.println(doc3);
            return doc3;
        }
        /**
         * 解析并提取HTML 元素
         * 里面有很多操作document的方法,这里以通过id做例子
         * @throws IOException
         */
        public static Element getElement() throws IOException{
            Document doc = Jsoup.connect("http://www.baidu.com").get();
            Element elementById = doc.getElementById("ftConw");
            System.out.println(elementById);
            return elementById;
        }
        /**
         * 改变属性,样式等等
         * 可以通过jsoup提供的各种选择器操作很多东西
         * @throws IOException
         */
        public static void changeAttr() throws IOException{
            Document doc = Jsoup.connect("http://www.baidu.com").get();
            Element elementById = doc.getElementById("ftConw");
            Elements select = elementById.select("a");
            Element element = select.get(0);
            System.out.println("before:"+element);
            element.removeAttr("onmousedown");
            System.out.println("after:"+element);
        }
        /**
         * HTML 文档清理
         * @throws IOException
         */
        public static void cleanHtml() throws IOException{
            Connection connect = Jsoup.connect("http://www.baidu.com");
            Document doc = connect.get();
            /**
             * Whitelist.basic():a, b, blockquote, br, cite, code, dd, dl, dt, em, i, li, ol, p, pre, q,small,strike, strong, sub, sup, u, ul;
             * Whitelist.basicWithImages():a, b, blockquote, br, cite, code, dd, dl,dt, em, i, li, ol, p, pre, q, small, strike, strong, sub, sup, u, ul、img、src;
             * Whitelist.relaxed():a, b, blockquote,br, caption, cite, code, col, colgroup, dd, dl, dt, em, h1, h2, h3, h4, h5, h6,i, img, li, ol, p, pre, q, small,

    strike, strong, sub, sup, table, tbody, td,tfoot, th, thead, tr, u, ul;
             * Whitelist.simpleText():简单的文本属性b, em, i, strong, u
             * Whitelist.none();//只保留了文本
             * 如果还不能满足要求,可以使用使用addAttributes、addEnforcedAttribute、addProtocols、addTags进行添加
             * 可以结合springmvc的initBinder一起使用
             */
            Whitelist whitelist = Whitelist.basic();//只保留了文本
            String clean = Jsoup.clean(doc.toString(), whitelist);
            System.out.println(clean);
        }
        

        public static void main(String[] args) throws IOException {
            //getBody();
    //        getElement();
    //        changeAttr();
            cleanHtml();
        }
    }

  • 相关阅读:
    洛谷P1002 过河卒
    XAF 接口和BOModel<DC翻译博客四>
    XAF DC中的关联<DC翻译博客三>
    XAF 组合关联<DC翻译博客十一>
    XAF 转换不同应用程序模型
    XAF How to: Implement Domain Components(如何实现领域构件)
    XAF 对基库的思考<DC翻译博客五>
    XAF–The State of Domain Components Technology in V2010 Vol 2
    Xpand Easy Sequential numbers(易用的序列号)
    XAF 如何实现批量更改多列多行单元格的值
  • 原文地址:https://www.cnblogs.com/zrbfree/p/5689123.html
Copyright © 2011-2022 走看看