Синтаксический анализ HTML с использованием библиотеки Jsoup

#java #android

#java #Android

Вопрос:

 <div class="serieSelector serieSelected" data-serie="36" data-title="Steps">
    <div class="value fontGreyBold">2620</div>
    <div id="stepsPulse" class="fontGreyLight">Steps</div>
</div>
  

В настоящее время я работаю над проектом Android, которому необходимо проанализировать некоторые данные с веб-сайта и отобразить данные в TextView. Как видно выше, мне нужно отобразить выделенное значение, которое равно «2620». Я использую Jsoup, и это мои данные элемента, полученные с веб-сайта. Я не знаю, какой именно тег использовать.

     try {
        Document document = Jsoup.connect(url).get();
        Elements stepstaken = document
                .select("div[class=measureValue fontGreyBold]span[class]");
        stta = stepstaken.attr("class");
    } catch (IOException e) {
        e.printStackTrace();
    }
  

Приведенный выше код не работает, поэтому приветствуются любые возможные ответы. Спасибо!

Комментарии:

1. пожалуйста, отформатируйте свой код 🙂

Ответ №1:

Я всегда использую PHP Simple DOM Parser всякий раз, когда мне нужно что-либо разобрать. Затем вы бы просто создали простой REST API, который возвращает проанализированные результаты. Работает как шарм. 🙂

Ответ №2:

Попробуйте этот разделитель

 document.select("div.value.fontGreyBold");
  

Пример

 import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

public class JsoupParser {
    public static void main(String[] args) {
        String html = "<div class="serieSelector serieSelected" data-serie="36" data-title="Steps">"
                  "<div class="value fontGreyBold">2620</div>"
                  "<div id="stepsPulse" class="fontGreyLight">Steps</div>"
                  "</div>";

        Document document = Jsoup.parse(html);
        Elements stepstaken = document.select("div.value.fontGreyBold");
        System.out.println(stepstaken.text());
    }

}
  

Комментарии:

1. К сожалению, это не работает. Я думаю, что может возникнуть проблема с входом в систему. Для этой страницы требуется логин, и, возможно, класс не распознает зарегистрированный сеанс.

2. Вы можете использовать jsoup, чтобы сначала отправить запрос на вход, а затем проанализировать ответ.

3. Хорошо, спасибо за информацию. Я попробую это таким образом и буду держать вас в курсе.