有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用jsoup解析html表

我正在使用jsoup解析表。我需要从这个网站连接到部门的常设表格:https://www.basketball-reference.com/leagues/NBA_2006.html。我不知道如何解析表格,因为我需要对每个部门的常设表格使用相同的方法,但对于较老的季节,id是不同的(例如:id="divs_standings_W""id="divs_standings_E""id="divs_standings_")。链接到一些旧的季节:https://www.basketball-reference.com/leagues/NBA_1950.html

如何检查具有给定id的表是否存在,并将其放入变量表中?没有太多相关的代码

Document doc = Jsoup.connect("https://www.basketball-reference.com/leagues/NBA_1950.html").get();
Elements table = doc.select("table[id=\"divs_standings_\"]");

共 (1) 个答案

  1. # 1 楼答案

    你可以直接使用prefix matching。使用table[id^="divs_standings_"]。这将匹配所有表,ID以divs_standings_开头:

    Document doc = Jsoup.connect("https://www.basketball-reference.com/leagues/NBA_1950.html").get();
    Element table = doc.selectFirst("table[id^=\"divs_standings_\"]");
    

    这将适用于新旧季节

    要将其包装在一个方法中,您可以使用以下内容:

    private static void processTable(String url) throws IOException {
        Document doc = Jsoup.connect(url).get();
        Element table = doc.selectFirst("table[id^=\"divs_standings_\"]");
        System.out.println(table);
    }
    

    并用两个URL调用它:

    processTable("https://www.basketball-reference.com/leagues/NBA_1950.html");
    processTable("https://www.basketball-reference.com/leagues/NBA_2006.html");
    

    如果有更复杂的ID,也可以使用模式匹配。请查看上面的链接