使用JSOUP选择特定的HTML表

时间:2018-10-11 13:46:20

标签: java html dom jsoup

我的代码为:

public static void main(String[] args) throws IOException {

    org.jsoup.nodes.Document doc = Jsoup.connect("https://ms.wikipedia.org/wiki/Malaysia").get();
    org.jsoup.select.Elements rows = doc.select("tr");
    for (org.jsoup.nodes.Element row : rows) {
        org.jsoup.select.Elements columns = row.select("td");
        for (org.jsoup.nodes.Element column : columns) {
            System.out.print(column.text());
        }
        System.out.println();
    }

}

它正在打印出网页上所有的表行,如果我只想打印出网站中的选定表,有可能吗?

2 个答案:

答案 0 :(得分:1)

尝试先选择一个特定的表元素,然后在其嵌套元素上循环。

public static void main(String[] args) throws IOException {
    Document doc = Jsoup.connect("https://ms.wikipedia.org/wiki/Malaysia").get();
    Element table = doc.select("table.wikitable").get(1);
    Elements body = table.select("tbody");
    Elements rows = body.select("tr");
    for (Element row : rows) {
        System.out.print(row.select("th").text());
        System.out.print(row.select("td").text());
        System.out.println();
    }
}

输出:

Ibu negaraKuala Lumpur
Pusat pentadbiranPutrajaya
Tarikh Hari Kebangsaan31 Ogos 1957
Cogan Kata NegaraBersekutu Bertambah Mutu
BenuaAsia, Asia Tenggara
Koordinat Geografi2 30 U, 112 30 T
Jumlah hujan tahunan2000mm ~ 2500mm
IklimTropika dengan suhu 24–35 Darjah Celsius
Bunga kebangsaanBunga Raya
Binatang rasmiHarimau
Puncak tertinggiGunung Kinabalu, Banjaran Crocker (4175m)
Puncak tertinggi SemenanjungGunung Tahan, Banjaran Tahan (2187 m)
Banjaran terpanjangBanjaran Titiwangsa (500 km)
Sungai terpanjangSungai Rajang, Sarawak (563 km)
Sungai terpanjang di SemenanjungSungai Pahang (475 km)
Jambatan terpanjangJambatan Pulau Pinang (13.5 km)
Gua terbesarGua Niah, Sarawak
Bangunan tertinggiMenara Berkembar Petronas (452m)
Negeri terbesarSarawak (124,450 km persegi)
Negeri terkecilPerlis (810 km persegi)
Tempat paling lembapBukit Larut (lebih 5080 mm)
Tempat paling keringJelebu (kurang daripada 1500 mm)
Kawasan paling padatKuala Lumpur (6074/km², 15,543/batu persegi)
Penanaman eksport utamaKelapa sawit dan getah

阅读更多有关JSOUP的文档here

答案 1 :(得分:1)

执行此操作的最佳方法是按其标题抓住表格。由于标题嵌入在表的表兄弟元素中,并且CSS没有父选择器,因此可以结合使用CSS和Jsoup API调用来实现此目的。

public static void main(String[] args) throws IOException {

    org.jsoup.nodes.Document doc = Jsoup.connect("https://ms.wikipedia.org/wiki/Malaysia").get();
    org.jsoup.nodes.Element table = doc.select("span#Trivia").parents().first().nextElementSibling();
    org.jsoup.select.Elements rows = table.select("tr");
    for (org.jsoup.nodes.Element row : rows) {
        System.out.println(row.select("th").text());
        System.out.println(row.select("td").text());
        System.out.println();
    }
}