[英]How to access nested divs using Jsoup
這是 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>
我只想將 Speciality、city 和 address 列的值訪問到變量中,如下所示:
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)
,我也無法僅獲取變量中的值。
您可能可以使用 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 的文本:
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();
嘗試這個:
Elements rows = doc.select("div.doc_details div.row div.row ");
Element row_div = rows.select("div.col-sm-6").get(1);
doctor.speciality = row_div.text();
告訴我它是否有效!
這是我將如何做到的:
Document doc = Jsoup.parse(html);
Elements rows = doc.select("div.doc_details div.row div.row ");
for (Element row : rows){
Elements innerDivs = row.select("div");
String header = innerDivs.get(1).text();
String content = innerDivs.get(2).text();
System.out.println("header = "+header+ " -> "+content);
}
我認為您在 css 選擇器中弄錯了!
編輯:(多虧了 OP,索引現在是正確的)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.