2012-08-23 52 views
5

我嘗試從這個網址得到一個代理列表:如何解析網頁中的動態內容?

Free proxy list

這將是很酷,但端口號是動態的JavaScript內容。如何從此頁面獲取JavaScript生成的內容?我有jsoup和djNativeSwing,但我想在後臺線程中執行此操作。

JWebBrowser webBrowser = new JWebBrowser(); 
webBrowser.navigate("http://spys.ru/en/free-proxy-list/"); 
System.out.println(webBrowser.getHTMLContent()); 

此代碼返回空結果。請幫助。

+0

check out'htmlUnit'我認爲這是你需要的一件事。謝謝。 –

+0

我認爲這不適合我。我的代碼必須簡單且跨平臺。正如我所知的HTMLUnit - 必須有SYSTEM路徑 - 這很麻煩 – Trump

+0

不,你不需要系統路徑。我創建了使用HTMLUnit的網頁爬蟲,它可以在http協議上工作。所以是的,它確實工作正常。讓我知道你是否想要更多的幫助。如果你願意,我可以寫一個正式的答案。 –

回答

2

當您調用getHtmlContent()方法時,webbrowser尚未完成加載。使用類似這樣的代替:

JWebBrowser webBrowser = new JWebBrowser(); 
webBrowser.navigate("http://spys.ru/en/free-proxy-list/"); 
webBrowser.addWebBrowserListener(new WebBrowserListener(){ 
    public void loadingProgressChanged(WebBrowserEvent e){ 
     if(e.getWebBrowser().getLoadingProgress()==100) 
      System.out.println(webBrowser.getHTMLContent()); 
    } 
} 
/* Note: I wrote this in the comment field without any testing, 
    you probably have to make the webBrowser final. */ 

JavaDocs是你的朋友!

+0

感謝您的快速回放,但我不希望從此代碼中獲得。以及如何不建立所有abstrcat類的事件。 – Trump

+0

2秒,我會嘗試獲取該庫並測試它 –

+0

Ок!我在等你! – Trump