【Android入门到项目实战-- 10.1】—— jsoup的详细使用教程

目录

一、jsoup介绍

二、jsoup的使用

1、导入依赖

2、建立连接

3、获取数据

获取各节点的方法

1)获取文字

2)获取图片


一、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的基础用法和提取文字、图片的操作先介绍到这里,下面文章将会介绍如何提取视频、音乐。

猜你喜欢

转载自blog.csdn.net/Tir_zhang/article/details/130567219