如何使用 Jsoup 从表格中提取文本

Posted

技术标签:

【中文标题】如何使用 Jsoup 从表格中提取文本【英文标题】:How to extract text with Jsoup from table 【发布时间】:2018-02-14 16:09:04 【问题描述】:

也许有人可以帮助我使用 jsoup 从 html 中提取信息?

需要的信息是 23.90

<tr>
  <td class="leftcell" valign="top">
  <div onclick=
  "ShowHideTravelDetails('bookingPrice_TaxesToggleBox', 
'bookingPrice_TaxesToggleIcon', '/Images');" class="productheader">...</div>
</td>
<td class="rightcell emphasize" align="right" 
valign="bottom">$23.90</td></tr>

我可以在 html 文档的几个地方看到它。 我试过使用

Elements taxes = doc.select("td.rightcell.emphasize");

但它不起作用。

还尝试从表中提取信息:

   Elements table = doc.select("table[class=selectiontable]");
        Elements rows = table.get(0).select("td[class^=rightcell emphasize]");
        for (Element row : rows) 


            Elements tds = row.select("td");
            System.out.println(tds.get(13));

【问题讨论】:

请添加代码而不是屏幕截图 第一个代码 sn-p 对我来说看起来不错。在第二个中,您正在检索 tds 并调用它们 rows 然后尝试检索一个孩子 td ;我猜你想取而代之的是trs(但是类选择器不再有意义) 【参考方案1】:

试试这样 我假设您有这样的代码。您需要进行嵌套级别迭代才能获得结果。

public class Test 
    public static void main(String[] args) 
        String html ="<table class=\"selectiontable\">\n" +
                "<tr>\n" +
                "  <td class=\"leftcell\" valign=\"top\">\n" +
                "  <div onclick=\n" +
                "  \"ShowHideTravelDetails('bookingPrice_TaxesToggleBox', \n" +
                "'bookingPrice_TaxesToggleIcon', '/Images');\" class=\"productheader\">...</div>\n" +
                "</td>\n" +
                "<td class=\"rightcell emphasize\" align=\"right\" \n" +
                "valign=\"bottom\">$23.90</td></tr>\n" +
                "</table>";


        Document document = Jsoup.parse(html);
        Elements elements = document.select(".selectiontable");
         for (Element element :elements)
             for (Element row : element.select("tr")) 
                 Elements tds = row.select("td");
                 if (tds.size() > 1) 
                     System.out.println(tds.get(1).text());
                 
             
         
    



输出:

$23.90

【讨论】:

谢谢!但现在我有一个问题,我试图通过 Document document = Jsoup.parse(doc.toString()); 解析整个 html 文档。它没有建立任何东西。即没有输出 23.90。可能是因为这个数字出现在html文件的几个地方? @brigitte 没有完整的 html 我无法解决您的问题。只需分享完整的 html 或至少来自 table 标签。我会整理出来。 ok,让我点击98.80你想得到什么结果? 税费 - 选择其中一种票价后,右侧会出现一个框。 98.80 是 23.90

以上是关于如何使用 Jsoup 从表格中提取文本的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Jsoup 提取单独的文本节点?

如何从图像中的表格中提取文本?

如何根据特定条件锁定代码块?

Jsoup - 提取文本

如何防止 Jsoup 转义 html?

如何从包含表格数据的图像中提取数据?