Получение фрагмента веб-страницы с помощью Jsoup в AsyncTask во фрагменте (Android Newbie) - PullRequest
0 голосов
/ 30 марта 2019

Я новичок в Java и Android, поэтому мне нужна ваша помощь.Я реализовал JSoup в своем приложении, чтобы взять это с веб-страницы и показать его в виде текста (я работаю с фрагментом, но я думаю, что это то же самое, что и стандартное действие в этом случае).

<body marginwidth="0" marginheight="0">
<h1></h1>
<p class="testoprezzo">0.5516 </p>
</body>

Я должен взять только 0,5516

Я понятия не имею, как это сделать.Вы можете мне помочь?Это код, который я уже написал:
class fetcher extends AsyncTask<Void,Void, Void> {

    @Override
    protected Void doInBackground(Void... arg0) {

        try {

            String value = "https://mywebpage.net/";
            Document document = Jsoup.connect(value).followRedirects(false).timeout(30000).get();
            Element p= document.select ("p.testoprezzo").first();
            ((Globals)getApplication()).setValore(p.text());




        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);


        TextView valore = findViewById(R.id.textView4);
        valore.setText(((Globals)getApplication()).getValore());








    }
}

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 30 марта 2019

Старайтесь использовать как можно более строгий селектор, чтобы не получить ненужных результатов. В вашем случае вы должны использовать -

Element e = doc.select("p.testoprezzo").first();
String result = p.text();
0 голосов
/ 30 марта 2019

Используйте Elements , чтобы получить тег p .

class fetcher extends AsyncTask<Void,Void, Void> {
String txtValue;

@Override
protected Void doInBackground(Void... arg0) {

    try {

        String value = "https://mywebpage.net/";
        Document document = Jsoup.connect(value).followRedirects(false).timeout(30000).get();
        Element p= document.select ("p.testoprezzo").first();
        txtValue = p.text();




    } catch (Exception e) {
        // TODO Auto-generated catch block
        txtValue = null;
        e.printStackTrace();
    }

    return null;
}

@Override
protected void onPostExecute(Void aVoid) {
    super.onPostExecute(aVoid);


    TextView valore = findViewById(R.id.textView4);
    valore.setText(txtValue);
}

}

Обратите внимание, что Elements и Элемент отличается.Используйте их в соответствии с вашими потребностями.Вот список всех селекторов вместе с примером.

Также обратите внимание: НЕ ДЕЛАТЬ НИКАКИХ ИЗМЕНЕНИЙ UI в методе doInBackground, иначе вы получитеошибка.

...