PhantomJs在不同的页面中注入jQuery

时间:2015-03-01 20:38:09

标签: phantomjs

我有一个PhantomJs脚本,我在其中创建一个新的wepage,将jQuery注入其中并从中抓取一个URL列表。之后我调用一个函数来传递URL列表并为每个创建一个新的网页并尝试从中恢复某些信息

var pageGlobal = require('webpage');

function createPage(){
    var page = pageGlobal.create();
    page.onAlert = function(msg) {
      console.log(msg);
    };

    return page;
}

var page=createPage();
page.open('http://www.example.com/', function(status){

    if ( status === "success" ) {
        page.injectJs('jquery-1.6.1.min.js');

        var urlList=page.evaluate(
             function(){
                var urlList=[];
                window.console.log = function(msg) { alert(msg) }; 
                $("td.row1>a").each(function(index, link) {
                    var link=$(link).attr('href');
                    urlList.push(link);
                });
                return urlList;
            });

       processUrlList(urlList);
    }
});

function processUrlList(urlList){
    for(i=0;i<urlList.length;i++){
        var currentPage=createPage();
        currentPage.open("http://www.example.com"+urlList[i], function(status){

        if ( status === "success" ) {
            if(currentPage.injectJs('jquery-1.6.1.min.js')===false){
                console.log("Error en la inyeccion");
            }

            currentPage.evaluate(function() {
                window.console.log = function(msg) { alert(msg) }; 
                console.log("Evaluating");
                $("showAdText").each(function(index, link) {
                    //Capture information about the entity in this URL
                })
            });
        }
});
    }
}

问题在于processUrlList函数注入jQuery总是失败返回false。创建两个或更多页面对象而不是只重用一个页面对象会有问题吗?这可能会发生什么?

0 个答案:

没有答案