java - Jsoup 在没有类或标签的情况下获取不同标签之间的特定数据

标签 java jsoup

我正在尝试获取 < "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/

相关文章:

javascript - jsoup 将 utf-8 字符转义为 é ...等...不在 &lt;script&gt; 标签中

java - JSoup 根据 Id 选择 Div,根据 title 选择 href

java - 使用 JSoup 获取 JavaScript 内容

android - 有什么比适用于 Android 的 JSoup 更好的吗?

java - Mysql表中的URL可以是超链接吗?

eclipse 无法启动 - 没有找到 java 虚拟机

java - 排序程序排序不正确

java - 在 Windows XP 中停止 Java 进程的策略

java - 在 android 数组适配器中使用 notifyDataSetChanged 时出错

java - 在没有用户名/密码的情况下用 Java 测试 Oracle DB 连接