一个小白的HTML解析笔记

利用jsoup解析html,建议先从demo开始看,容易理解

1、笔记

1.1、jar包下载:

jsoup-1.11.3.jar:https://download.csdn.net/download/m0_37909265/10628013

1.2、代码步骤

1.2.1、获得HTML文档:

// 网络加载HTML文档
Document doc = Jsoup.connect("https://www.80txt.com/txtml_77475.html")
      .timeout(5000) // 设置超时时间
      .get(); // 使用GET方法访问URL

1.2.2、从文档中获取标签内容

Elements elements = doc.select("#yulan");

同样,我们也能够从标签中继续获取标签

Elements spans = elements.select("li");

Elements 是一个集合,可遍历获取标签内的数据

for (Element element:spans){
    String title = element.getElementsByTag("a").text(); // 获取标签携带数据
    String url = element.select("a").attr("href"); // 获取标签内键值对数据
    Log.e("章节名", title + url);
}

如果标签div为class,则select()中为div.class_name
一个标签的内容如下:一个标签内能够有其他若干标签

<xxx> ...  </xxx>
举个栗子:
<div id="yulan">
<li><a rel="nofollow" href="http://www.qiushu.cc/t/77475/24883552.html">第1章 获得暴君系统</a></li>
<li><a rel="nofollow" href="http://www.qiushu.cc/t/77475/24883553.html">第2章 召唤猛将</a></li>
</dev>
其中div,li,a都是标签

1.2.3、获取标签数据:

 String title = element.getElementsByTag("a").text(); // 获取标签携带数据

1.2.4、获取标签键值对数据

String url = element.select("a").attr("href"); // 获取标签内键值对数据

获取div的值也可以用,测试连接www.txt53.com/read/45008_1.html

 String title = element.getElementsByTag("div").text(); // 小说内容

2、Demo

2.1、demo1

2.1.1、测试网址:

www.80txt.com/txtml_77475.html

2.1.2、类型说明

/*
*目标在二级标签内:
*<div ... </div> 是一级标签,
*<li>... </li>是二级标签,
*<a ... </a>是目标数据所在的标签,其中rel和href是键值对中的键,
*“第1章 获得暴君系统”是标签携带的数据
*/
<div id="yulan">
<li><a rel="nofollow" href="http://www.qiushu.cc/t/77475/24883552.html">第1章 获得暴君系统</a></li>
<li><a rel="nofollow" href="http://www.qiushu.cc/t/77475/24883553.html">第2章 召唤猛将</a></li>
......
</div>

2.1.3、代码

    private void getDataByJsoup(){
        // 开启一个新线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                Log.e("开始","解析0");
                try {
                    // 网络加载HTML文档
                    Document doc = Jsoup.connect("https://www.80txt.com/txtml_77475.html")
                            .timeout(5000) // 设置超时时间
                            .get(); // 使用GET方法访问URL
                         /*
                          *  以下是获取标签内数据的关键步骤
                          * */
                    Elements elements = doc.select("#yulan");//获取名为yulan的div标签数据
                    Elements spans = elements.select("li");//在div数据中获取li的标签
                    for (Element element:spans){//遍历li标签
                        String title = element.getElementsByTag("a").text(); //获取li标签内,a标签的携带数据
                        String url = element.select("a").attr("href"); // 获取li标签内,a标签的href键携带的数据
                                             Log.e("章节名", title + url);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }).start();

    }

2.1.4、结果:

这里写图片描述

笔记

 Elements elements = doc.select("#yulan");//获取名为yulan的
div标签数据

中的”#yulan”,如果div标签是

<div class="list-hd">

则为”#yulan”需要改为”div.list-hd”,一个是id,一个是class,这两个的标签获取有细微区分,要注意,至于其他的标签,还未测试过

2.2、 demo2

2.2.1、测试连接:

http://www.txt53.com/read/45008.html

2.2.2、类型说明

/*
*目标在一级标签内:
*

2.2.3、代码

操作:把demo1中的关键代码替换为

Elements div_class = doc.select("div.read_list");//获取div
Elements alist = div_class.select("a");//获取所有a
for (Element element: alist){
/*获取a中的键值*/
       String href =  element.attr("href"); // href键
        title = element.attr("title"); // title键
        Log.e("TAG",  title + href );
}

猜你喜欢

转载自blog.csdn.net/m0_37909265/article/details/82084512
今日推荐