java - 在 Jsoup 中按内容选择标签并在给定标签后获取第 n 个标签

标签 java html jsoup

我有一个 HTML 文档,我想从中抓取数据。数据的tag除了是第13位<td>外没有唯一标识来自 <td> 的标签包含给定字符串的标签。

例如,第 10 个 <td>文档中的标签包含单词“狗”(即 <td>dog</td> 。文档中的其他 <td> 标签也不包含相同的数据。)。给定单词“dog”,我是否有可能提取第 23 个 <td> 中的内容?使用 Jsoup 方法在文档中添加标签,如果是的话如何?

编辑:

<td>Cat</td>
   <td align="center">40</td>
   <td align="center">67</td>
   <td align="center">58<br>0</td>
   <td align="center">32</td>
<td>Dog</td>
   <td align="center">0</td>
   <td align="center">0</td>
   <td align="center">58<br>0</td>
   <td align="center">99</td>
<td>Snake</td>
   <td align="center">7</td>
   <td align="center">85</td>
   <td align="center">58<br>0</td>
   <td align="center">13</td>

在这样的文档中,只给出动物的名字,我希望能够从中提取第 n 个标签中的数字,比方说 4。所以给定“猫”我想找到 32。给定“狗”,99。对于蛇 13。假设文档中有数百种动物。

最佳答案

您可以使用 structural pseudo selectors以第 n 个元素为目标。

doc.select("td:nth-child(23)");

由于您正在查找带有 Dog 的行,因此您可以先选择该行。

Element dogRow = doc.select("tr:has(td:contains(dog))").first();

然后选择第23个 child

String cellValue = dogRow.select("td:nth-child(23)").first().ownText();

或组合它们

String cellValue = doc
    .select("tr:has(td:contains(dog)) > td:nth-child(23)")
    .first()
    .ownText();

编辑

我重读了你的问题,你似乎想在一行中找到 Dog,然后找到第 n 个 sibling 。

为此,您可以使用 elementSiblingIndexgetElementsByIndexEquals:

    Element dogRow = doc.select("tr:has(td:contains(dog))").first();

    int dogCellIndex = dogRow
        .select("td:contains(dog)")
        .first()
        .elementSiblingIndex();

    int otherCellIndex = dogCellIndex + 10;

    String cellValue = dogRow
        .getElementsByIndexEquals(otherCellIndex)
        .text();

关于java - 在 Jsoup 中按内容选择标签并在给定标签后获取第 n 个标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38723207/

相关文章:

java - 使用 JSON key 文件而不是 p12 的 Google 服务帐户域范围委托(delegate)集服务帐户

java - 为什么我的后端应用程序未在Spring Boot中运行?

html - 如何使用 HTML5 和 CSS3 制作动画?是否有免费的应用程序可以做到这一点?

java - 如何使用 <span> 或任何其他 HTML 标签包装部分文本而不转义新的 HTML 结构?

java - 使用 <c :forEach> with HashMap

java - 如何检测用户是否单击窗口标题栏或 Java 中窗口边框的任何其他部分

html - 如何从图标后面创建 div 的过渡?

html - 当我将鼠标悬停在按钮上时,为什么我的按钮不起作用?

java - 卡在 Jsoup 解析 Html 中

jsoup - 如何使用 Jsoup 保留新行?