簡體   English   中英

從jsoup的嵌套href中檢索數據

[英]Retrieving data from nested href from jsoup

我想從jsoup的嵌套href中檢索數據,我的意思是:我有href: https://www.sherdog.com/news/rankings/2/Sherdogs-Official-Mixed-Martial-Arts-Rankings-164999

我想從這 10 個人中獲取每個數據,例如:

1. STIPE MIOCIC 年齡:37 或協會:STRONG STYLE Fight TEAM

2. DANIEL CORMIER 年齡:40 或協會:美國跆拳道學院

ETC..

這個怎么做?

    String url = "https://www.sherdog.com/news/rankings/2/Sherdogs-Official-Mixed-Martial-Arts-Rankings-164999";
    Document document = Jsoup.connect(url).get();

    Elements allH1 = document.select("h2");
    for (Element href : allH1) {

        Elements allAge = document.select("div.birth_info");
        for (Element  age : allAge) {
            System.out.println(href.select("a[href]").text().toString());
            System.out.println(age.select() // something there?);
        }

您要查找的數據存在於單獨的頁面上 - 每個戰斗機都有自己的頁面,因此您必須逐頁抓取所有頁面才能獲取數據。
首先,您必須使用選擇器h2 > a[href]獲取每個頁面的鏈接:

String url = "https://www.sherdog.com/news/rankings/2/Sherdogs-Official-Mixed-Martial-Arts-Rankings-164999";
Document document = Jsoup.connect(url).get();
Elements fighters = document.select("h2 > a[href]");
for (Element fighter : fighters) {
     System.out.println(fighter.text() + " " + fighter.attr("href"));
}

之后,您可以加載每個頁面並提取數據:

String fighterUrl = "https://www.sherdog.com" + fighter.attr("href"); 
Document doc = Jsoup.connect(fighterUrl).get();
Element fighterData = doc.select("div.data").first();
System.out.println(fighterData.text());

結合在一起,你得到:

String url = "https://www.sherdog.com/news/rankings/2/Sherdogs-Official-Mixed-Martial-Arts-Rankings-164999";
Document document = Jsoup.connect(url).get();
Elements fighters = document.select("h2 > a[href]");
for (Element fighter : fighters) {
    System.out.println(fighter.text());
    String fighterUrl = "https://www.sherdog.com" + fighter.attr("href"); 
    Document doc = Jsoup.connect(fighterUrl).get();
    Element fighterData = doc.select("div.data").first();
    System.out.println(fighterData.text());
    System.out.println("---------------");
}

而(部分)output 是:

Stipe Miocic 出生:1982-08-19 年齡:37 Independence,美國俄亥俄州 身高 6'4" 193.04 cm 體重 245 lbs 111.13 kg 協會:強風格格斗隊 Class:重量級 19 15 KO/TKO (79%) 0 提交(0%) 4 決定 (21%) 損失 3 2 KO/TKO (67%) 0 提交 (0%) 1 決定 (33%)

Daniel Cormier 出生時間:1979-03-20 年齡:40 歲,加利福尼亞州聖何塞,美國身高 5'11" 180.34 cm 體重 251 lbs 113.85 kg 協會:美國跆拳道學院 Class:重量級 22 10 KO/TKO (45%) 5 次提交(23%) 7 決定 (32%) 損失 2 1 KO/TKO (50%) 0 提交 (0%) 1 決定 (50%) N/C 1

如果您想獲取年齡、關聯等單獨的字段,則必須使用正則表達式提取它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM