2012-04-12 47 views
3

以下是PhantomJS脚本的一个片段。它跟踪AJAXd网页上的动态内容。轨道()被调用一次,但由于某些原因page.open()被调用3次函数调用一次,但多次触发

function track(url){ 
     console.log('Tracking',url); 
     var page = require('webpage').create(); 
     console.log('check2') 
     if(page){ 
      console.log('check4'); 
      page.open(url, function (status) { 
       console.log('check3'); 
       if (status !== 'success') { 
        console.log('Unable to load the address!'); 
        setTimeout(function(){start();},1000); 
        setTimeout(function(){page.release();},5000); 
       } 
       else { 
        console.log('check'); 
        var i = 0; 
        var last_winner = false; 
        var logged_once = false; 
        var interval = false; 
        if(!interval){ 
         interval = setInterval(function(){ 
          var scraping = scrape(page); 
          var date = new Date(); 
          var time = date.getTime(); 
          if(scraping){/*Bunch of console logs*/} 
          else{ 
           console.log('Bidding ended'); 
           clearInterval(interval); 
           setTimeout(function(){start();},1000); 
           setTimeout(function(){page.release();},5000); 
          } 
          scraping = false; 
         },1000); 
        }; 
       }; 
      }); 
     }; 
    }; 

记录以下控制台:

Tracking http://www.google.com 
check2 
check4 
check3 
check 
check3 
check 
check3 
check 

出于某种原因,我无法弄清楚,page.open()被调用3次。

+0

我揣摩,哪些页面对象真的是:'的console.log(页);' – Corkscreewe 2012-05-10 18:04:25

+0

尝试改变的console.log( 'check3');到console.log(status);并看看你得到了什么。我有一种感觉,它在处理http状态代码时通过open()几次循环? – 2012-05-23 20:08:35

回答