我使用phantomjs从一些使用ajax每秒自动更新的网站获取一些数据。这些网站会更新3个小时,因此我们需要每隔一段时间从这些网站获取一些数据。 我定义了一个打开每个网页的对象:
function myobj(nemad, url) {
this.url = url;
this.nemad = nemad;
var me = this;
nemad = require('webpage').create();
nemad.open(url);
this.myans = function() {
var ua = nemad.evaluate(function() {
return document.getElementById("MainContent");
});
return ua;
}
}
我们有一个数组,对于这些网页(urls =[...];
)有大约200个网址。为了打开页面,我们首先为每个URL定义一个新对象,并将其存储在如下所示的数组中:
var arr=[];
for ( i=0;i<urls.length;i++) {
arr.push(new stocks(nemads[i], urls[i]));
}
当所有网页成功打开后,我们需要为每个网页调用myobj.myans();
函数来获取数据。
setInterval(function() {
var result = [];
for (i = 0; i < arr.length; i++) {
result.push(arr[i].myval());
}
console.log("Result => " + result );
}, 1000);
所以我们遇到了一些问题:
webpage.close()
来释放内存,但我们必须长时间打开每个网页(3小时)并每秒接收一次数据。有什么不对?