Đây là một câu hỏi cũ, nhưng vì tôi đang tìm tải trang đầy đủ nhưng cho Spookyjs (sử dụng casperjs và ph Phantomjs) và không tìm thấy giải pháp của mình, tôi đã tạo ra kịch bản của riêng mình cho điều đó, với cách tiếp cận tương tự như người dùng. Cách tiếp cận này là, trong một khoảng thời gian nhất định, nếu trang không nhận được hoặc bắt đầu bất kỳ yêu cầu nào, nó sẽ kết thúc thực hiện.
Trên tệp casper.js (nếu bạn đã cài đặt nó trên toàn cầu, đường dẫn sẽ có dạng như /usr/local/lib/node_modules/casperjs/modules/casper.js) thêm các dòng sau:
Ở đầu tệp có tất cả các vars toàn cầu:
var waitResponseInterval = 500
var reqResInterval = null
var reqResFinished = false
var resetTimeout = function() {}
Sau đó, bên trong hàm "createPage (casper)" ngay sau "var page = quiries ('trang web'). Create ();" thêm mã sau đây:
resetTimeout = function() {
if(reqResInterval)
clearTimeout(reqResInterval)
reqResInterval = setTimeout(function(){
reqResFinished = true
page.onLoadFinished("success")
},waitResponseInterval)
}
resetTimeout()
Sau đó, bên trong "page.onResourceReceured = function onResourceReceured (resource) {" trên dòng đầu tiên thêm:
resetTimeout()
Thực hiện tương tự cho "page.onResourceRequested = function onResourceRequested (requestData, request) {"
Cuối cùng, trên "page.onLoadFinished = function onLoadFinished (status) {" trên dòng đầu tiên thêm:
if(!reqResFinished)
{
return
}
reqResFinished = false
Và đó là, hy vọng điều này sẽ giúp ai đó gặp rắc rối như tôi. Giải pháp này dành cho casperjs nhưng hoạt động trực tiếp cho Spooky.
Chúc may mắn !