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);
}
}
}
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"));
}
}