java - 使用 JSoup 解析复杂表中的值

标签 java web-scraping html-table jsoup html-parsing

我有一个包含以下 html 的表格:

<TABLE class=data-table cellSpacing=0 cellPadding=0>
  <TBODY>
  <TR>
    <TD colSpan=4><A id=accounting name=accounting></A>
      <H3>Accounting</H3></TD></TR>
  <TR>
    <TH class=data-tablehd align=left>FORM NO.</TH>
    <TH class=data-tablehd align=left>TITLE</TH>
    <TH class=data-tablehd align=right>Microsoft</TH>
    <TH class=data-tablehd align=right>Acrobat</TH></TR>
  <TR>
    <TD><A id=1008ft name=1008ft>SF 1008-FT</A></TD>
    <TD>Work for Others Funding Transfer Between Projects for an Agreement</TD>
    <TD align=right><A 
      href="https://someurl1" 
      target=top>MS Word</A></TD>
    <TD align=right><A 
      href="https://someurl2" 
      target=top>PDF </A></TD></TR>
...

我需要解析<TR>数据得到类似

SF 1008-FT, Work for Others ... an Agreement, https://someurl1, https://someurl2

我尝试使用以下代码:

    URL formURL = new URL("http://urlToParse");
    Document doc = Jsoup.parse(formURL, 3000);

    Element table = doc.select("TABLE[class = data-table]").first();
    Iterator<Element> ite = table.select("td[colSpan=4]").iterator();

    while(ite.next() != null) {
        System.out.println(ite.next().text());
    }

但是,这只会返回“返回顶部”和整个表格中的一些不同标题。

有人可以帮我编写正确的 JSoup 代码来解析我需要的信息吗?

最佳答案

我没有时间测试,但你可以使用这样的东西:

        Element table = doc.select("TABLE[class = data-table]").first();
        Elements rows = table.select("tr");

        for (Element td: rows.get(2).children()) {
            System.out.println(td.text());
        }

您将获得表格第三行的子项。

关于java - 使用 JSoup 解析复杂表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19910291/

相关文章:

java - 无法在 Controller 中的 javafx 中创建按钮数组

java - 通过java processBuilder运行cmd命令

web-scraping - UserWarning : The soupsieve package is not installed. 无法使用 CSS 选择器

python - 使用 BeautifulSoup4 解析数据

html - align = "center"不适用于表格

java - 使用Install4j确定是否安装了JRE

Java 泛型,实现 Iterable<E> 类型的接口(interface)

javascript - 使用 Python 抓取 javascript 生成的页面

javascript - JQuery 可排序表插件不适用于选项卡

html - 如何固定表格的标题行(带有水平和垂直滚动条)?