Как cпарсить конкретные данные из общего класса?

Рейтинг: 0Ответов: 2Опубликовано: 02.02.2015

Здравствуйте!

Я использую библиотеку jsoup для парсинга html страниц сайтов. Например, если мне нужно получить значение из класса information.

<div class="information"> Кот </div>

Я делаю так:

Document doc = Jsoup.connect(URL).get();
Elements i = doc.getElementsByClass("information");

Получается, все, что обернуто в класс information, мы получим на выходе "Кот". НО если "Кот" не единственное значение, которое обернуто в класс information. Например, если на одной странице находится другое, в том же классе? Например, такая картина:

// Здесь код HTML (всякие доктайпы,кодировки,тайтлы,дескрипшены,подключение скриптов и т.д.)
----------
----------
// Начинается блок с инфой
<div class="information"> Кот </div>
// Далее куча других классов
----------
----------
// И опять блок,только с другой инфой,но с тем же классом
<div class="information"> Хомяк </div>
----------
----------

Думаю, суть понятна. Т.е. если я напишу хоть два раза одно и то же:

Document doc = Jsoup.connect(URL).get();
Elements i = doc.getElementsByClass("information");
Document doc = Jsoup.connect(URL).get();
Elements i = doc.getElementsByClass("information");

то на выходе я все равно получу значение, которое идет первым, т.е. на выходе будет

"Кот" "Кот"

Теперь вопрос! Как пролистать или перепрыгнуть на место, где находится "Хомяк"? Заранее спасибо.

Ответы

▲ 3

Elements это обертка для List<Element>, то есть списка элементов.
Код вида

Document doc = Jsoup.connect(URL).get();
Elements i = doc.getElementsByClass("information");

вернет вам в i список всех элементов с классом "information". Итерируйтесь через него. С ним можно работать точно так же, как и со списком. Там будет и кот, и хомяк, и остальные жирафы и коровы.

▲ 2

я бы вам посоветовал использовать селекторы. сам не так давно сталкивался с такой задачей. более того, чтобы не мучиться и не дебажить, можно испытывать селекторы онлайн http://try.jsoup.org/

вот вам рабочий селектор для получения доллара и евро div[id=currency:usd], div[id=currency:eur]