Java 从站点提取表数据?

标签 java html dom jsoup

Java 新手,我最近开始学习如何使用 Java 从网站读取 HTML,但我一直在尝试学习如何解析它并提取元素(有用的数据)。我一直在寻找最好的方法来做到这一点,并且 Jsoup 不断出现,所以我决定尝试一下。我能够提取表格元素,但有很多无用的 HTML,最好将其删除。.我如何从该站点提取表格并只包含行元素,使用 Jsoup 是否有一种简单的方法?

String html = "http://beta.letsplaysoccer.com/facilities/26/teams/187822";

         Document doc = Jsoup.connect(html).get();
         Elements tableElements = doc.select("table");
         System.out.print(tableElements);

感谢您的帮助!

编辑:无用的 HTML,如标签、类名等。如果我想使用此表数据,我只想使用游戏日期或其他内容

<td> <a href="/facilities/26/games?exact_date=14-03-30">Sun 03-30-14 07:25 PM</a></td>

我最终想做的是将这些数据提取到我自己的 GUI 或其他东西中

最佳答案

jsoup有帮助,但您需要手动浏览所有 HTML,这有点痛苦......

例如,这里有一些内容可以打印第一个表中的得分情况:

import java.io.IOException;
import java.util.List;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Node;
import org.jsoup.select.Elements;
import org.junit.Test;

public class JSoupTest {

    @Test
    public void testJSoup() throws IOException {
        String html = "http://beta.letsplaysoccer.com/facilities/26/teams/187822";

        Document doc = Jsoup.connect(html).get();
        Elements tableElements = doc.select("table");

        Element firstTable = tableElements.get(0);

        List<Node> firstTableRows = firstTable.childNodes().get(1).childNodes();
        int numRows = firstTableRows.size();
        // skip first row as header
        for (int i = 1; i < numRows; i++) {
            Node row = firstTableRows.get(i);
            if (row instanceof Element) {
                Node homeTeam = row.childNode(5).childNode(1).childNode(0);
                Node visitorTeam = row.childNode(7).childNode(1).childNode(0);
                // some are in bold
                if(visitorTeam.childNodeSize() > 0 ){
                    visitorTeam = visitorTeam.childNode(0);
                }
                Node score = row.childNode(9).childNode(0);
                System.out.println(homeTeam + " vs " + visitorTeam + ": " + score);
            }
        }

    }
}

关于Java 从站点提取表数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22310562/

相关文章:

java - Spring Boot YML 和 StandAlone Tomcat 8 服务器

java - 在 eclipse 中运行 Weblogic

html - z-index 问题 - 在菜单下方定位 css3 三 Angular 形

html - 我的部分 div 位于我的标题 div 之上

javascript - 使用 Angular 指令向 DOM 添加可切换按钮

javascript - 使用 document.getElementsByTagName 进行 DOM 操作

java - 如何使用 Android 共享 Intent 选择器 (ACTION_SEND) 监听/捕获社交媒体共享的成功事件?

java - 将多个特定文件作为来自另一个 java 程序的一个字符串 arg 传递

javascript - 如何使用 javascript 输入 window.prompt() 的值?

jquery - 引用 DOM jQuery DOM 对象时使用变量