如何使用Jsoup访问嵌套的div [英] How to access nested divs using Jsoup

查看:176
本文介绍了如何使用Jsoup访问嵌套的div的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是html页面:

<div class="doc_details">
  <fieldset style="border: 0pt">
    <div class="row">
      <div class="col-sm-6 col-md-6">
        <div class="row">
          <div class="col-sm-6 col-md-6">
            <b>Speciality</b>
          </div>
          <div class="col-sm-6 col-md-6">ABCD</div>
        </div>
        <div class="row">
          <div class="col-sm-6 col-md-6">
            <b>City</b>
          </div>
          <div class="col-sm-6 col-md-6">Ranchi</div>
        </div>
        <div class="row">
          <div class="col-sm-6 col-md-6">
            <b>Residence Address</b>
          </div>
          <div class="col-sm-6 col-md-6">Ranchi</div>
        </div>
        <div class="row">
          <div class="col-sm-6 col-md-6">
            <b>Business Address</b>
          </div>
          <div class="col-sm-6 col-md-6">Ranchi</div>
        </div>
      </div>
    </div>
  </fieldset>
</div>

我想只访问Specialty,city和address列的值到变量中,如下所示:

I would like to access only the values of the Speciality, city and address columns into a variable as follows:

Elements rows = doc.select("div.doc_details div.row div.row ");
Element row_div = rows.select("div.row").get(0);
doctor.speciality = row_div.select("div:eq(0)").text();

但即使我更改了 get(0) get(1),我只能得到变量中的值。

But even if I change the get(0) to get(1), I'm not able to get only the values in the variable.

推荐答案

您可以使用css选择器执行此操作:

You can probably do this with a css-selector :

doc.select("div.row > div.col-sm-6:nth-child(2)")

返回此信息:

0 = {Element@754} "<div class="col-sm-6 col-md-6">\n  ABCD \n</div>"
1 = {Element@756} "<div class="col-sm-6 col-md-6">\n  Ranchi \n</div>"
2 = {Element@758} "<div class="col-sm-6 col-md-6">\n  Ranchi \n</div>"
3 = {Element@760} "<div class="col-sm-6 col-md-6">\n  Ranchi \n</div>"

这真的取决于你,你可以将列表映射到每个div的文本:

It's then really up to you, you can for example map the list to the text of each div :

    divs.stream().map(new Function<Element, String>() {
        @Override
        public String apply(Element element) {
            return element.text();
        }
    }).collect(Collectors.toList()));

或更简单:

String speciality = divs.get(0).text();
String city = divs.get(1).text();
String adress = divs.get(2).text();

这篇关于如何使用Jsoup访问嵌套的div的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆