2014-01-27 105 views
1

我正在使用java從網頁獲取一些信息。 問題是我需要的信息是由JavaScript函數生成的。如何獲取這些信息是因爲下面的代碼在全部加載之前僅帶有頁面信息(這意味着我只能獲得頁面的框架)。如何知道網頁是否已完全加載或不在java中

code1。

URL target = new URL() 
HttpURLConnection con = (HttpURLConnection)target.openConnection(); 
StringBuffer sb = new StringBuffer(); 
String line = ""; 
BufferedReader br = null 

try { 
    br = new BufferedReader(new InputStreamReader(con.getInputStream())); 

    while((line = br.readLine()) != null){ 
     sb.append(line); 
    } 
} catch(Exception e){ 
    e.printStackTrace(); 
} 

有沒有辦法知道頁面在Java中完全加載? (額外的庫可以是答案,但我希望只用java來做)。謝謝。

+0

此代碼將只抓取由URL標識的單個資源,而不是該資源中的任何引用資源。對於你真正需要的東西就像一個網頁瀏覽器 –

+0

你可能電線像這樣與http://htmlunit.sourceforge.net/ –

回答

3

你正在從Java的HTTP請求,這將返回文本流,「網頁加載」的概念是一個瀏覽器的相關概念,瀏覽器請求的網頁的內容(與你正在做的),然後呈現該頁面並執行Javascript。這是執行Javascript的瀏覽器。

如果你只想用Java編寫這個程序,你需要實現一個無頭瀏覽器(一個沒有用戶界面的瀏覽器),或者至少在你正在加載和執行的頁面上獲得Javascript。在純Java環境下從頭開始做這件事並不是一件容易的事,請查看HtmlUnit舉例。

+0

非常感謝。我應該嘗試一下。 –

1

Java不會執行任何客戶端JavaScript。它只會讀它。如果您想要瀏覽器,請使用瀏覽器。

+0

嚴格地說OP可以利用犀牛(絕不是一個完整的DOM是瀏覽器的替代品將本地提供),這將有助於縮小這個應用程序的野心,只是他們想要提取,執行和讀取的JavaScript函數。 –

+0

謝謝。我認爲這是可能的。 –

相關問題