我下載pjscrape(運行引擎蓋下PhantomJS)完全填充的動態內容,而事實上,頁面查詢完全恢復填充的內容,包括動態內容。不幸的是,pjscrape只會發出JSON或CSV。我需要HTML。獲取與PhantomJS
使用PhantomJS孤單,我有這樣的腳本(調用我的-query.js):
var page = require('webpage').create();
page.open('http://www.sonoma.edu/calendar/groups/clubs.html', function (status) {
console.log("status: " + status);
if (status !== "success") {
console.log("Unable to access network");
} else {
page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js", function() {
console.log("Got jQuery...");
var fullyPopulatedContent = null;
page.evaluate(function() {
$(document).ready(function() {
fullyPopulatedContent = $("html").html();
});
});
window.setTimeout(function() {
console.log(fullyPopulatedContent);
}, 10000);
});
}
});
但這個邏輯不落fullyPopulatedContent
的page.evaluate
完成後。 IE,fullyPopulatedContent
只是總是null
。
這似乎是,你會覺得PhantomJS會做出來的箱子免費這樣一個普通的應用。
任何線索如何讓這樣的查詢工作,當目標URL包含內容動態地通過Ajax/JavaScript或幀填充?如果涉及到框架,您是否也可以解釋PhantomJS如何瀏覽框架內容,因爲在線文檔和示例對該主題不太清楚。
我嘗試了幾次超時。在*全部*情況下,查詢的頁面永遠不會充滿動態內容。我收到了有關URL的HTML正文 - 沒有動態內容。你關於你列出的代碼? –
PhantomJS可能不處理通過iframe元素填充的動態內容嗎? –
當然是的,但是在切換之前你必須切換到childFrame,然後才能訪問它的DOM或使用'page.frameContent'。 iFrame內容在父/主框架中不可見。 –