loop through array of urls in phantomjs using javascript

こ雲淡風輕ζ 提交于 2019-12-06 11:07:14

问题


I'm trying to get my code to loop through an array of urls but getting stuck.

This bit of code simply runs in phantomjs and outputs the requested url and the redirects for any main resource objects.

I'd like to use an array as an input to this process like:

var pageUrl = [
'http://www.google.com',
'http://www.facebook.com'
];

here's the original

var sys = require('system');
var pageUrl = 'http://www.google.com';


console.log("Requested URL: " + pageUrl);



var renderPage = function (url) {
    var page = require('webpage').create();

    page.onNavigationRequested = function(url, type, willNavigate, main) {

        if (main && url!=pageUrl) {
            console.log("Redirected URL: " + url)
        }
    };



    page.open(url, function(status) {
            if ( status !== 'success' ) {
                phantom.exit(1);
            } else {
                setTimeout(function() {
                    phantom.exit(0);
                }, 0);
            }
        });
};


renderPage(pageUrl);

回答1:


var urls = [
'http://www.google.com',
'http://www.facebook.com'
];


function process() {
    if (urls.length == 0) {
        phantom.exit();
    } else {
        //remove the first item of an array
        url = urls.shift();
        //open a page
        page = require('webpage').create();

        //store the requested url in a separate variable
        var currentUrl = url


        page.open(url, onFinishedLoading)

        page.onNavigationRequested = function(url, type, willNavigate, main) {
            console.log('\n' + currentUrl + '\nredirecting to \n' + url);
        }

    }
}

function onFinishedLoading(status) {

    console.log(status);
    page.release();
    process();
}

process();


来源:https://stackoverflow.com/questions/32334673/loop-through-array-of-urls-in-phantomjs-using-javascript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!