通过JSOUP从div类中获取数据

时间:2018-03-05 08:59:54

标签: java android jsoup

我需要获得价值" 8.32"来自" rnicper"," 36 mg"来自" rnstr"和" 20/80 PG / VG"来自" nirat"。

<div class="recline highlight" id="rnic">
          <div class="rlab"><span class="nopr indic indic-danger"></span>Nicotine juice <span id="rnstr">36 mg</span> (<span id="nirat">20/80 PG/VG</span>)</div>
          <div class="runit" id="rnicml">2.08</div>
          <div class="rdrops" id="rnicdr">73</div>
          <div class="rgrams" id="rnicg" style="display: none;">2.53</div>
          <div class="rpercent" id="rnicper">8.32</div><br>
        </div>

我尝试了各种方法,但没有任何反应。

doc.getElementById("rnicper").outerHtml();
doc.getElementById("rnicper").text();
doc.select("div#rnicper");
doc.getElementsByAttributeValue("id", "rnicper").text();

请告诉我,如何使用JSOUP获取此信息?

Chintak Patel的更新

AsyncTask asyncTask = new AsyncTask() {
            @Override
            protected Object doInBackground(Object[] objects) {
                Document doc = null;
                try {
                    doc = Jsoup.connect("http://e-liquid-recipes.com/recipe/2254223/RY4D%20Vanilla%20Swirl%20DL").get();
                } catch (IOException e) {
                    e.printStackTrace();
                }

                String content =  doc.select("div[id=rnicper]").text();
                Log.d("content", content);

                return null;
            }
        };
        asyncTask.execute();

2 个答案:

答案 0 :(得分:3)

您尝试获取的参数值不是初始html的一部分,但是在加载页面后由javascript设置。 Jsoup只获取静态html,不执行javascript代码。

要获得您想要的内容,您可以使用HtmlUnit或Selenium等工具。

HtmlUnit示例:

    try (final WebClient webClient = new WebClient()) {
        webClient.getOptions().setThrowExceptionOnScriptError(false);
        final HtmlPage page = webClient
                .getPage("http://e-liquid-recipes.com/recipe/2254223/RY4D%20Vanilla%20Swirl%20DL");

        System.out.println(page.getElementById("rnicper").asText());

    }

答案 1 :(得分:0)

在Activity类中编写以下类,并使用JSoup执行。此代码用于从Play商店网站获取当前版本。您可以将网址和#include "Bildverarbeitung.h" //https://www.baslerweb.com/fp-1476182890/media/downloads/documents/application_notes/AW00136101000_Getting_Started_with_pylon4_and_OpenCV.pdf int main() { bilderkennung->run(); } 更改为div[id=rnicper]方法。然后在select()方法中执行。

postExecute()