当前位置: 首页 > 知识库问答 >
问题:

Jsoup选择带有多个标记的标记后的文本

太叔志尚
2023-03-14

我想在每个文本之后使用jsoup提取一个文本。有没有办法选择它?

示例代码如下:

<div class="content">
<div name="panel-summary" id="summary">
    <p>
    <strong>A: </strong>*thank you* **I want to retrieve this text**<br>
    <strong>B: </strong>*Bla..bla* *I don't want this text*<br>
    <strong>C: </strong>*what ever text* *I dont want this*                         
        <strong>D: </strong>*anythinh text* *I want this*<br>
        <strong>E: </strong>*Bla..bla* *I don't want this text*t<br>
        <strong>F: </strong>*anythinh text* *I want this*<br>
    </p>

    <p>I want this</p>

当它完成时,它会创建自动id示例id=123

共有1个答案

钮善
2023-03-14

如果我们可以假设所有

在处理strong之后,我们可以转到第二个

String html = "<div class=\"content\">\n" +
        "<div name=\"panel-summary\" id=\"summary\">\n" +
        "    <p>\n" +
        "    <strong>A: </strong>*thank you* **I want to retrieve this text**<br>\n" +
        "    <strong>B: </strong>*Bla..bla* *I don't want this text*<br>\n" +
        "    <strong>C: </strong>*what ever text* *I dont want this*                         \n" +
        "        <strong>D: </strong>*anythinh text* *I want this*<br>\n" +
        "        <strong>E: </strong>*Bla..bla* *I don't want this text*t<br>\n" +
        "        <strong>F: </strong>*anythinh text* *I want this*<br>\n" +
        "    </p>\n" +
        "\n" +
        "    <p>I want this</p>";

Document doc = Jsoup.parse(html);
Elements pElements = doc.select("#summary p");
Elements strongElements = pElements.first().select("strong:matchesOwn(A:|D:|F:)");
for (Element strong : strongElements) {
    System.out.println(strong.nextSibling());//get next element, including textual element
}
System.out.println("---");
System.out.println(pElements.get(1).text());//textual content of <p>I want this</p>

输出:

*thank you* **I want to retrieve this text**
*anythinh text* *I want this*
*anythinh text* *I want this*
---
I want this

如果你不想依赖

Elements allStrElemens = doc.select("#summary p strong");

简单地通过他们的索引选择你需要的(记住索引从0开始),比如

System.out.println(allStrElemens.get(0).nextSibling());
System.out.println(allStrElemens.get(3).nextSibling());
System.out.println(allStrElemens.get(5).nextSibling());

 类似资料:
  • 我想提取一个文本后,每个标签使用jSoup。有什么方法可以直接选择它,还是我必须执行。

  • 我想选择强标签内的文本,但不在其下的div。。。 有没有可能直接与jsoup合作? 我的选择尝试(不工作,选择强标签内的完整内容): HTML:

  • 我最近尝试使用JSoup来解析HTML文档,我在JSoup上做了一遍turrorious,发现select-Method可能就是我要找的。 我试图完成的是找到html文档中拥有某个类的所有元素。为了测试这一点,我在amazon的网页上尝试了这一点(想法:找到所有有特定优惠的交易)。 因此,我检查了web页面,看看正在使用哪些类和ID,然后尝试将其集成到一个小代码段中。在本例中,我找到了follwi

  • 问题内容: 我目前正在开发一个Ionic Framework(AngularJS)项目,该项目使用地理位置和Google Maps显示用户的位置。 我正在尝试向用户显示地理位置以及该区域周围的多个标记。 我的地理位置已正常运行,但似乎无法添加多个标记。 地点 控制器 问题答案:

  • 我实际上正在用Java开发一个文本解析器,有人要求我通过用它解析HTML来增强它。解析器的目的是将被解析的文件分成另外三个文件,一个包含文件中包含的所有单词,一个包括所有句子,另一个包含所有问题。 *.txt部分工作得很好,但我在解析HTML时遇到了一个问题。 我创建了一个扩展名为*.txt的临时文件,并将其在我的文本解析器中传递,但是如果我传递一个带有HTML文件链接的URL,其格式如下所示:

  • JSoup在这里。我有以下我试图解析的超文本标记语言: 不幸的是,它的格式有点不正确(在