2011-08-08 34 views
0

我想從一個使用JavaScript加載他們的大部分內容的網站抓取數據。現在我正在使用jSoup來解析html頁面,但是由於大部分內容是使用javascript加載的,因此我無法解析我想要的數據。刮擦數據。保存存檔?

我應該如何去獲取這個javascript內容?我應該先保存頁面,然後使用jSoup加載並解析它?如果是這樣,我保存之前應該使用什麼來加載JavaScript內容?有沒有一個你會推薦可以輸出html的API?

當前正在使用java。

回答

1

您可能有興趣查看pjscrape(免責聲明:這是我的項目)。它是一個使用PhantomJS的命令行工具,允許在完整的瀏覽器上下文中使用JavaScript和jQuery進行搜索 - 除此之外,您可以爲該頁面定義一個「準備就緒」功能,並等待該功能(可能會檢查是否存在某些DOM元素等)返回true。

另一個選項,取決於頁面,是使用像Firebug這樣的控制檯來確定正在加載什麼數據(即,頁面上的AJAX調用正在檢索哪些URL),並直接從數據中提取數據這些網址。

0

如果使用javascript生成數據,則數據位於下載的頁面中。 更好的是直接解析它們,就像使用純HTML或文本解析一樣。 如果您無法使用jSoup API隔離令牌,只需使用直接字符串選項將其解析爲純文本。

0

我試過使用htmlUnit但是我發現它很慢。

我結束了在Java中使用curl命令行函數,它爲我的目的工作。

String command = "curl "+url; 
Process p = Runtime.getRuntime().exec(command); 

BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream())); 
while ((s = stdInput.readLine()) != null) { 
    html = html+s+"\n"; 
} 

return html;