Jsoup: получить данные из таблицы

#java #jsoup #html-parsing

Вопрос:

Я хотел бы получить 71–85 доступ к веб-странице с помощью Jsoup. После некоторых проб и ошибок я смог сделать это, используя следующий код:

 document.select("#row_13 > div.row-desc > div").text();
 

Я не думаю, что это хорошее решение, подумал он. Я использую здесь id то, что является частью таблицы. Возможно, лучшим подходом было бы получить то, что появится после Pages . Однако я понятия не имею, как к этому подойти. Любая помощь была бы очень кстати!

 <div style="" class="  row row-even" id="row_13">
   <div class="row-label" >
      <div class="white_label ">Pages</div>
   </div>
   <div class="row-desc">
      <div class="white_desc " style="width: 100%">
         71–85
      </div>
   </div>
</div>
 

EDI
Вот страница, с которой взят вышеуказанный контент:
http://cejsh.icm.edu.pl/cejsh/element/bwmeta1.element.desklight-dc6b14c1-8478-426a-8f2e-bb5636e0a5e9

Ответ №1:

Возможно, лучшим подходом было бы получить то, что появится после Pages .

Сначала выберите элемент с классом row-label , содержащий текст «Страницы». Затем выберите первого родственника этого элемента и извлеките его текст.

Вы можете сделать это вот так:

 document.select(".row-label:contains(Pages)   *").first().text();
 

Вы даже можете опустить .first() , если точно знаете, что есть только один элемент с классом row-label , который содержит текст «Страницы».:

 document.select(".row-label:contains(Pages)   *").text();
 

Обратитесь к Selector синтаксису для получения информации об используемых обозначениях.