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

一.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.csdn.net/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.csdn.net/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();
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值