我试图获取<的数据。 “b”> #8(随机文字)。
现在我有这个代码给了我需要的标题
Document doc = Jsoup.connect("");
Elements title = doc.select("div.column.two-third");
Element k = title.select("b").get(8);
但我也需要文字。有可能吗?
网站代码示例我试图获取数据
<div class="column two-third">
<div style="color:#000000">
<b>Title I dont want:</b> random text // "b" #0 </br>
<b>Title i dont want</b> random text // "b" #1 <br>
<b>Title i dont want:</b> random text // "b" #7 <br>
**<b>TITLE I WANT :</b> random text // "b" #8 <br>**
<div align="justify"> <br> <br> <b style="color:#000000">text i dont want</b><br>
正如您所看到的,我想要的文本是没有类或ID的Div,文本也没有标签(“p”)。我只需要#8。有可能吗?
答案 0 :(得分:0)
是的,有可能:<b>
标记之后的文本位于文本节点中。因此,在获取正确的<b>
标记之后,jsoup允许您使用.parent().childNode(int index)
(https://jsoup.org/apidocs/org/jsoup/nodes/Node.html#childNode-int-)选择父元素中的特定节点,并为您提供目标<b>
元素的索引使用.siblingIndex()
,所以只需将索引处的childNode递增1。
示例代码
Elements bTags = htmlDocument.select("div.column.two-third > div b");
if(bTags.size()>8){
Element title = bTags.get(8);
String text = title.parent().childNode(title.siblingIndex()+1).toString();
System.out.println(title.text() + "\n" + text);
}
<强>输出强>
TITLE I WANT :
random text