我正在尝试获取 < "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。有可能吗?
最佳答案
是的,有可能:<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
关于java - Jsoup 在没有类或标签的情况下获取不同标签之间的特定数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41730174/