HTML、XML 等 Dom 结点类解析库的使用

本文介绍Jsoup库的使用方法,包括如何解析HTML文档、提取数据及修改文档内容。通过实例展示了Jsoup强大的DOM解析能力及其类似jQuery的操作方式。

一.Jsoup 的特点和优势

1.Jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

2.Jsoup的特点:

  • HTML、XML、自定义DOM格式文本解析
  • 可操作HTML元素、属性、文本
  • 适用于采集解析网站HTML
  • DOM解析功能强大
二. Jsoup 的基本结点解析用法

1.基本用法:
分析Html或Dom文本的结点标签结构
寻找你要解析的那个内容部分所在的结点标记
调用Jsoup API解析结点内容


2.代码演示:
使用 Jsoup 载入 Html 数据
使用 Jsoup 解析并提取 HTML 元素 
使用 Jsoup 修改数据
使用 Jsoup HTML 文档清理

package com.example.admin.myapplication;

import android.content.Intent;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.ant.liao.GifView;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.safety.Whitelist;
import org.jsoup.select.Elements;

import java.io.File;
import java.io.IOException;

/**
 * 使用 Jsoup 载入 Html 数据
 *
 * 使用 Jsoup 解析并提取 HTML 元素
 *
 * 使用 Jsoup 修改数据
 *
 * 使用 Jsoup HTML 文档清理
 *
 * 可以使用Jsoup解析Html,Epub,自定义格式文本
 *
 * @author Administrator
 *
 */
public class MainActivity extends AppCompatActivity {
    private String html = "<html><head><title>Jsoup用法</title></head>"
            + "<body><p><a href='http://baidu.com'>这里是 jsoup 项目的相关文章</a></p></body></html>";
    private String url = "http://blog.youkuaiyun.com/mobile/newarticle.html";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //载入 Html 数据
        Document document= Jsoup.parse(html);
        document.title();
        Elements elements=document.getElementsByTag("a");
        for (Element element:elements){
            String link=element.attr("href");
            String text=element.text();
        }

        //检索
        elements=document.select("a[herf]");
        elements=document.select("img[src$=.png]");
        Element element=document.select("div.className").first();

        //增加
        document.select("div.className").attr("key","value");
        ///class="myclass"
        document.select("div.className").addClass("myclass");
        document.select("img").removeAttr("onclick");

        try {
            //载入 Html 数据,GET请求
            document=Jsoup.connect(url).get();
            Elements elements1=document.select("div.blog_list_c");
            for (Element element1:elements1){
                String text=element1.text();

            }
            //载入 Html 数据,POST请求
            // document=Jsoup.connect(url).data("key","value").timeout(3000).post();
        } catch (IOException e) {
            e.printStackTrace();
        }

        //加载本地网页
        File input=new File(Environment.getExternalStorageDirectory()+File.separator+"index.html");
        try {
            Document document1=Jsoup.parse(input,"utf-8",url);
        } catch (IOException e) {
            e.printStackTrace();
        }

        //过滤功能
        String htmls="";
        String htmlsSafe=Jsoup.clean(htmls, Whitelist.basic());



    }
}

三. 使用 Jsoup 实现 Html 解析和 Epub 解析

package com.example.admin.myapplication;

import android.content.Intent;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import com.ant.liao.GifView;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.safety.Whitelist;
import org.jsoup.select.Elements;

import java.io.File;
import java.io.IOException;

/**
 * 使用 Jsoup 载入 Html 数据
 *
 * 使用 Jsoup 解析并提取 HTML 元素
 *
 * 使用 Jsoup 修改数据
 *
 * 使用 Jsoup HTML 文档清理
 *
 * 可以使用Jsoup解析Html,Epub,自定义格式文本
 *
 * @author Administrator
 *
 */
public class MainActivity extends AppCompatActivity {
    private String html = "<html><head><title>Jsoup用法</title></head>"
            + "<body><p><a href='http://baidu.com'>这里是 jsoup 项目的相关文章</a></p></body></html>";
    private String url = "http://blog.youkuaiyun.com/mobile/newarticle.html";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        new Thread(new GetDataThread()).start();
    }

    public class GetDataThread extends Thread{
        @Override
        public void run() {
            //parseHtml();
            parseEpub();

        }
    }

    private void parseEpub() {

    }

    private void parseHtml() {
        //载入 Html 数据
        try {
            //载入 Html 数据,GET请求
            Document document=Jsoup.connect(url).get();
            Elements elements=document.select("h3.tracking-ad");
            for (Element element:elements){
                String text=element.getElementsByTag("a").attr("href");
                Log.i("fsg_element",text);

            }
            //载入 Html 数据,POST请求
            // document=Jsoup.connect(url).data("key","value").timeout(3000).post();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

计及风电并网运行的微电网及集群电动汽车综合需求侧响应的优化调度策略研究(Matlab代码实现)内容概要:本文研究了计及风电并网运行的微电网及集群电动汽车综合需求侧响应的优化调度策略,并提供了基于Matlab的代码实现。研究聚焦于在高渗透率可再生能源接入背景下,如何协调微电网内部分布式电源、储能系统与大规模电动汽车充电负荷之间的互动关系,通过引入需求侧响应机制,建立多目标优化调度模型,实现系统运行成本最小化、可再生能源消纳最大化以及电网负荷曲线的削峰填谷。文中详细阐述了风电出力不确定性处理、电动汽车集群充放电行为建模、电价型与激励型需求响应机制设计以及优化求解算法的应用。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事新能源、微电网、电动汽车等领域技术研发的工程师。; 使用场景及目标:①用于复现相关硕士论文研究成果,深入理解含高比例风电的微电网优化调度建模方法;②为开展电动汽车参与电网互动(V2G)、需求侧响应等课题提供仿真平台和技术参考;③适用于电力系统优化、能源互联网、综合能源系统等相关领域的教学与科研项目开发。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注模型构建逻辑与算法实现细节,同时可参考文档中提及的其他相关案例(如储能优化、负荷预测等),以拓宽研究视野并促进交叉创新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值