1
我是CasperJS的新手,我遇到了evaluate()函數的問題。我有以下示例代碼:casper評估修改全球變種
var results = []; // a global var
var links = [link1, link2 ,....]; //a list of urls
var current = 0;
function search(url){
this.start(url, function(){
results = this.evaluate(function() {
var returnVal = [];
//some code to store data into returnVal
return returnVal;
};
})
}
function check(){
if(current<7){
this.echo('---Page' + (current + 1) + '---');
search.call(this, links[current]);
console.log(results.length);
this.run(check);
current++;
} else{
this.exit();
}
casper.start()
casper.then(function(){this.echo("starting");});
casper.run(check);
所以基本上代碼應該收集來自7頁的一些數據和存儲數據的全局變量的結果。每頁有50個數據要存儲。因此,預期輸出是:
Starting
---Page1---
50
---Page2---
100
---Page3---
150
...
但實際產量爲:
Starting
---Page1---
0
---Page2---
50
---Page3---
50
...
我期待結果的長度在每次迭代後增加。但是當我運行它時,結果的長度保持不變,這意味着在第一次迭代之後,它永遠不會改變。另外,我不明白爲什麼第1頁上的長度是0。我無法弄清楚爲什麼。請問有人可以幫忙嗎?謝謝!
謝謝!這解決了我遇到的第一個問題。現在結果正在遞增。但是,我仍然有兩個問題:(1)我仍不明白爲什麼page1顯示0結果。在調用check()之後我有了print語句,所以它應該被執行一次。 (2)它看起來像是每個頁面都返回相同的內容,而實際上它應該是不同的。是否評估()調整相同的東西,無論我傳入的網址? – pew007 2013-04-25 05:26:41