使用jsoup从互联网获取数据

问题描述

**嗨,我正尝试从页面获取数据,但我不知道如何获取此数据:第120章和de url链接

这是页面上的代码(我简化了):

<div class="row">
<div class="col-12">
<div class="card chapters" id="chapters">
<ul class="list-group list-group-flush">
<li class="list-group-item p-0 bg-light upload-link" data-index="0">
<h4 class="px-2 py-3 m-0">
<div class="row">
<div class="col-10 text-truncate">
<a style="display: block;" class="btn-collapse" onclick="collapseChapter('collapsible490362')" role="button"> Capítulo 120.00</a>
</div>
</div>
</h4>
<div style="display: block;" id="collapsible490362">
<div class="card chapter-list-element">
<ul class="list-group list-group-flush chapter-list">
<li class="list-group-item">
<div class="row">    
<div class="col-2 col-sm-1 text-right">
<a href="https://lectortmo.com/view_uploads/599487" class="btn btn-default btn-sm">
<span class="fas fa-play fa-2x" style="color:#2957ba"></span>
</a>
</div>
</div>
</li>
</ul>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>

在这一行中,我们可以看到我需要在TextView显示的文本(第120章),但我不知道该怎么获得

<a style="display: block;" class="btn-collapse" onclick="collapseChapter('collapsible490362')" role="button"> Chapter 120</a>

在这一行中,我们可以看到我需要的网址:

<a href="https://lectortmo.com/view_uploads/599487" class="btn btn-default btn-sm">

这是我获取数据解析的方法

@Override
    protected ArrayList<TMODatosSeleccion> doInBackground(Void... voids) {
        String url = getIntent().getStringExtra("valor");

        tmoDatosSeleccions.clear();
        try {
            Document doc = Jsoup.connect(url).get();

            Elements data = doc.select("div.row>.col-10");
            int size = data.size();
            Log.d("doc","doc: "+doc);
            Log.d("data","data: "+data);
            Log.d("size",""+size);
            for (Element e : data) {
                String numeroCap = e.select("a").attr("none");
                String urlManga = e.select("div.row>.col-2").select("a").addClass("btn").attr("href").trim();
                tmoDatosSeleccions.add(new TMODatosSeleccion(numeroCap,urlManga));
            }
        }  catch (IOException e) {
            e.printstacktrace();
        }
        return tmoDatosSeleccions;
    }

有人可以帮助我吗?

打印屏幕:

enter image description here

解决方法

您可以使用以下方法找到要查找的两个链接:

Elements data = doc.select("div.row a");
for (Element e : data)
{
    // process the link
}

或者您可以使用以下方法分别获取它们:

Elements data = doc.select("div.row>.col-10 a");
if (data.size() == 1)
{
    Element e = data.get(0);
    // process col-10 link
}

data = doc.select("div.row>.col-2 a");
if (data.size() == 1)
{
    Element e = data.get(0);
    // process col-2 link
}

您遇到的主要问题是col-2元素未嵌套在col-10元素内,因此您的循环将找不到任何项目。