2013-10-17 11 views
7

Una domanda relativa a Jsoup: Sto creando uno strumento che recupera i prezzi da un sito Web. Tuttavia, questo sito ha contenuti in streaming. Se navigo manualmente, vedo i prezzi di 20 minuti fa e devo aspettare circa 3 secondi per ottenere il prezzo corrente. C'è un modo per fare qualche tipo di ritardo in Jsoup per poter ottenere i prezzi nella sezione streaming? Sto usando questo codice:Ritardo Jsoup dovuto allo streaming del sito Web

conn = Jsoup.connect(link).userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36"); 

conn.timeout(5000); 

doc = conn.get(); 
+0

E il metodo che hai pubblicato non funziona ..? –

+0

Grazie! Riempirà il documento ma solo con prezzi differiti. Il problema è che ho bisogno dei prezzi visualizzati sul sito web 3 secondi dopo aver inizialmente caricato la pagina. – Wouter

+2

I prezzi arrivano davvero nella stessa connessione HTTP? Oppure è caricato da qualche codice JS nella pagina? Potresti mostrarci una parte di quel flusso, solo per capire meglio? –

risposta

0

Come accennato nei commenti, il sito è più probabile utilizzando qualche tipo di script che proprio non funziona con Jsoup. Poiché Jsoup riceve la risposta HTML iniziale e non esegue alcun javascript.

Volevo darvi un po 'più di sicurezza su dove andare ora. La soluzione migliore, in questi casi, è spostare su un'altra piattaforma per questi tipi di siti. Puoi eseguire la migrazione a HTMLUnit che è un browser senza testa o Selenium che può utilizzare HTMLUnit o un browser reale come Firefox o Chrome. Consiglierei il Selenium se pensi che avrai mai bisogno di superare HTMLUnit come HTMLUnit a volte può essere meno stabile di un browser rispetto ai browser consumer che Selenium può supportare. Puoi utilizzare Selenium con il driver HTMLUnit che ti offre la possibilità di spostarti in un altro browser in un secondo momento.

1

È possibile utilizzare un JavaFX WebView con javascript abilitato. Dopo aver atteso i due secondi, puoi estrarre i contenuti e passarli a JSoup.

 
(After loading your url into your WebView using the example above) 
String text=view.getEngine() executeScript("document.documentElement.outerHTML"); 
Document doc = Jsoup.parse(html); 
Problemi correlati