本文介绍了如何使用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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!