您的位置:首页 > Web前端 > HTML

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

2016-09-20 16:39 471 查看
一.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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: