目录
一、jsoup介绍
Jsoup是一款Java的html解析工具。使用jsoup可以爬取网页的数据,如图片、文字、视频、音乐等,像python的爬虫一样,jsoup是java的爬虫。
使用jsoup获取到网页的数据后,可以展示在你的APP上。
二、jsoup的使用
先引入网络申请权限,这里不要忘,有网络后才能访问网页。
<uses-permission android:name="android.permission.INTERNET" />
1、导入依赖
build.gradle文件引入依赖:
implementation 'org.jsoup:jsoup:1.12.1'
2、建立连接
MainActivity代码:
首先与要爬取的网页建立连接,这里爬取了百度的HTML,注意网络请求不能放在主线程,需要子线程。
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Thread(new Runnable() {
@Override
public void run() {
Document document = null;
String url = "https://www.baidu.com";
try {
document = Jsoup.connect(url).get();
Log.d("TTTT", "jsoup:" + document);
} catch (IOException exception) {
exception.printStackTrace();
}
}
}).start();
}
});
效果如下:
查看百度的源代码:
可以看到是一致的。
3、获取数据
获取各节点的方法
以下代码可获取class名为"have-img"的元素
input = document.getElementsByClass("have-img");
以下代码可获取属性名为“data-note-id”的内容
input.attr("data-note-id");
以下代码可获取a标签下的img标签的src属性内容
src = input.select("a").select("img").attr("src");
以下代码可获取第二个a标签的内容。
content.select("a").get(1).text();
1)获取文字
通过上一步建立连接后,我们已经拿到了网页的所有数据,接下来,我们可以解析html来获取我们想要的数据了。
如下图,我们获取以下文字。
选择标签后,我们需要的是meta标签的第4个(从0开始),使用get()方法得到第四个meta标签,attr()方法可以获取属性名为xxx的内容。
public void run() {
Document document = null;
String url = "https://www.baidu.com";
Elements elements = null;
try {
document = Jsoup.connect(url).get();
elements = document.select("meta");
String string = elements.get(4).attr("content");
Log.d("TTTT", string);
} catch (IOException exception) {
exception.printStackTrace();
}
}
效果如下:
2)获取图片
下面实现获取我的博客的某篇博客的封面图片。
下面代码可以实现获取图片的src。
public void run() {
Document document = null;
String url = "https://blog.csdn.net/Tir_zhang?type=blog";
Elements elements = null;
try {
document = Jsoup.connect(url).get();
elements = document.getElementsByClass("blog-img-box");
String string = elements.get(5).select("img").attr("src");
Log.d("TTTT", string);
} catch (IOException exception) {
exception.printStackTrace();
}
}
效果如下:
获取网络地址后需要加载网络图片。
使用Glide框架可以加载网络图片。具体使用可参考:Android中Glide的使用_安卓glide_5239ZM的博客-CSDN博客
以下代码可以使用Glide加载图片。
Glide.with(MainActivity.this).load(string).into(imageView);
最终代码:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Thread(new Runnable() {
@Override
public void run() {
Document document = null;
String url = "https://blog.csdn.net/Tir_zhang?type=blog";
Elements elements = null;
try {
document = Jsoup.connect(url).get();
elements = document.getElementsByClass("blog-img-box");
string = elements.get(5).select("img").attr("src");
Log.d("TTTT", string);
} catch (IOException exception) {
exception.printStackTrace();
}
}
}).start();
Glide.with(MainActivity.this).load(string).into(imageView);
}
});
效果如下:
有关使用jsoup的基础用法和提取文字、图片的操作先介绍到这里,下面文章将会介绍如何提取视频、音乐。