2013-10-17 32 views
7

有關Jsoup的問題:我正在構建一個從網站獲取價格的工具。但是,這個網站有流媒體內容。如果我手動瀏覽,我會看到20分鐘前的價格,並且需要等待大約3秒才能獲得當前價格。我有什麼辦法可以讓Jsoup能夠在流媒體部分獲得價格方面的某種延遲?我使用此代碼:由於流式傳輸網站造成的Jsoup延遲

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

而你發佈的方法不起作用..? –

+0

謝謝!它將填寫文件,但只有延遲價格。問題是,我需要網站在最初加載頁面3秒後顯示的價格。 – Wouter

+2

價格實際上是在同一個HTTP連接中?或者它是由頁面中的一些JS代碼加載的?你能向我們展示這一流的一部分,只是爲了更好地理解? –

回答

0

正如在評論中提到,該網站是最有可能使用某種類型的腳本,就不會與Jsoup的工作。由於Jsoup只是獲得最初的HTML響應,並且不執行任何JavaScript。

我想給你更多的指導,但現在要去哪裏。在這種情況下,最好的辦法就是轉移到這些類型網站的另一個平臺。您可以遷移到HTMLUnit這是一個無頭瀏覽器,或Selenium,它可以使用HTMLUnit或Firefox或Chrome等真實瀏覽器。如果您認爲您將需要移過HTMLUnit,那麼我會推薦Selenium,因爲與Selenium可支持的消費者瀏覽器相比,HTMLUnit有時可能不夠穩定。您可以使用帶有HTMLUnit驅動程序的Selenium,以便以後可以無縫移動到其他瀏覽器。

1

您可以使用啓用了javascript的JavaFX WebView。等待兩秒後,您可以提取內容並將它們傳遞給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);