Come trovare il selettore per webscraping in Java?


Sto cercando di raschiare le statistiche di una partita di hockey da un sito web. Quello che posso raschiare esattamente, è che se nelle ultime partite prima di quella partita la squadra di casa aveva vinto o aveva losen. Quindi c'è questo sito , e sto cercando di ottenere le informazioni dall'ultima colonna. Ho usato l'ispettore negli strumenti di sviluppo e ho indovinato che avrei dovuto usare il selettore "span.winLoseIcon a". Penso che non sia il selettore giusto da usare qui, perché quando eseguo il programma il titolo della stringa è vuoto.

Ecco il mio frammento di codice:

  import org.jsoup.Jsoup;
 import org.jsoup.nodes.Document;
 import org.jsoup.nodes.Element;


public class HockeyScraper {




public static void main (String[] args) throws Exception {
    final Document page = Jsoup.connect("http://www.eredmenyek.com/merkozes/nBPiuHF3/#egymas-elleni;overall").get();

    for (Element games : page.select("span.winLoseIcon a")) {
        final String title = games.text();

        System.out.println(title);
    }

}

}

Author: Armin Beda, 2017-04-03

1 answers

Controllo il sito web, non sta caricando i dati direttamente, ha usato JavaScript per caricare i dati, quindi non puoi scartare direttamente da quell'url. Controllo che usi javascript per ottenere dati inviando la richiesta get a http://d.eredmenyek.com/x/feed/d_hh_nBPiuHF3_hu_1 con alcune informazioni di intestazione che sono obbligatorie.

Puoi usare il codice qui sotto che funziona per me per ottenere tutto il punteggio del titolo ecc

    final Document page = Jsoup
            .connect("http://d.eredmenyek.com/x/feed/d_hh_nBPiuHF3_hu_1")
            .cookie("_ga", "GA1.2.1639955025.1491211513")
            .referrer("http://d.eredmenyek.com/x/feed/proxy-local")
            .userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36")
            .header("X-Fsign", "SW9D1eZo")
            .header("X-GeoIP", "1")
            .header("X-Requested-With", "XMLHttpRequest")
            .get();

    for (Element game : page.getElementsByClass("head_to_head").first().getElementsByTag("tr")) {
        System.out.println("----------------------------------------------------");
        System.out.println(game.text());

        Elements list = game.getElementsByClass("form-bg-last");
        if (!list.isEmpty()) {
            System.out.println("Title : " + list.first().attr("title"));
        }
    }
 0
Author: Ashraful Islam, 2017-04-03 11:08:07