我有一個擁有大量AJAX的骨幹應用程序。 (每頁加載結果5-6 ajax調用),因爲我有這些意見內的許多意見和內部意見,Phantom.js是否捕獲所有的AJAX?
如果我運行Phantom.js,我可以得到最終的html結果?
最終結果是用戶在我的所有ajax調用運行後看到的內容。
我有一個擁有大量AJAX的骨幹應用程序。 (每頁加載結果5-6 ajax調用),因爲我有這些意見內的許多意見和內部意見,Phantom.js是否捕獲所有的AJAX?
如果我運行Phantom.js,我可以得到最終的html結果?
最終結果是用戶在我的所有ajax調用運行後看到的內容。
PhamtonJs是一款帶JavaScript API的無頭WebKit。當抓取一個頁面時,PhatomJs將下載所有的依賴者請求,比如圖像,js,css ...它也會執行JS和ajax調用。 但是,onLoaded回調在頁面完成加載時調用,而不是在沒有掛起的請求時調用。所以,你必須使用這個技巧。
有解決問題的雙向:
Phantom.js能夠在您的頁面中運行JavaScript,所以這應該工作。有一個article描述如何使用Phantom.js爲抓取工具提供很好的javascript網站版本。
一定要給Phantom.js足夠的時間來完成ajax調用,因爲這個thread describes。
您可以使用$ .active以及waitFor.js腳本,該腳本返回到服務器的活動連接的數量,並且我們需要等待所有請求完成爲0。
如果你從waitFor()
方式訪問網站的JavaScript代碼,放在一邊,我覺得你可以讓你的Ajax請求同步。它有時更簡單,更準確。
爲什麼不自己嘗試? –
你對'最終的HTML'是什麼意思?你的意思是像「document.body.innerHTML」? – 11684