Парсинг HTML на Java с Jsoup

245
25 января 2018, 18:59

Как можно получить 56,4115 вот отсюда:

<td class="weak">
   <ins class="rubl">руб.</ins>&nbsp;
   56,4115
</td>

Пробовала так, но первого чайлда нет:

Document doc = Jsoup.connect("https://cbr.ru/").get();
Elements tdElements = doc.getElementsByAttributeValue("class", "weak");
tdElements.forEach(tdElement -> {
    Element insElement = tdElement.child(1);
});
Answer 1

Здесь нет второго вложенного элемента, но есть просто внутренний текст, его и нужно прочесть:

Document doc = Jsoup.connect("https://cbr.ru/").get();
Elements tdElements = doc.getElementsByAttributeValue("class", "weak");
tdElements.forEach(tdElement -> System.out.println(tdElement.ownText()));
Answer 2

"Чайлда" и правда нет. Метод child(число) возвращает один дочерний элемент (то есть узел, обрамленный тегами). Зато есть дочерние текстовые узлы, которые можно получить отдельным списком textNodes() или вместе с остальными узлами childNodes()

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

Answer 3

Я сделал вот так.

 Document doc = Jsoup.connect("https://cbr.ru/").get();
            String result = doc.getElementsByAttributeValue("class", "weak").select("td").get(0).html();
//если методу get передать значение 1, то получится результат в евро
            result=result.substring(result.lastIndexOf(';')+1);
            System.out.println(result);
READ ALSO
Итератор Java в JavaScript

Итератор Java в JavaScript

Есть код на Java:

231
Java Spring обработка больших объемов данных

Java Spring обработка больших объемов данных

Опишу задачу, прошу подсказки куда смотретьНадо обработать большое количество данных как можно быстрее и эффективнее

225
Java потоки и сокеты

Java потоки и сокеты

Существует клиент-серверное приложение в работе которого используются сокеты и с каждым сокетом создаётся новый поток, в который передаются...

172
Telegram bot sendMessage() is deprecated in java

Telegram bot sendMessage() is deprecated in java

Если этот метод уже deprecated, то как лучше отправлять сообщения клиенту?

208