我一直在使用 nodejs 和zombiejs 从网站获取一些个人数据。不幸的是,我被困在一个地方,zombiejs 只能从第一个链接获取数据,然后挂断。
我遵循的步骤是-
- 转到基本网址
- 获取页数
- 使用异步库通过每次打开一个新的浏览器窗口来连续获取它们。注意我只创建一个浏览器窗口而不是一个全新的浏览器实例,因为创建一个实例很昂贵。
这是我的代码
var Browser = require("zombie");
var async = require('async');
var so_base="http://stackoverflow.com";
var so_url="http://stackoverflow.com/questions/tagged/java?sort=newest&pagesize=15&page=";
var browser = new Browser();
browser.visit(so_base, function () {
var arr=[];
for(var i=1;i<=10;i++) {
arr.push(i);
}
async.eachSeries(
arr,
function(k, callback) {
browser.open();
browser.visit(so_url+k,function() {
console.log(browser.location.href);
console.log(browser.html());
});
},
function(e) {
console.log(e);
});
});
结果
>node main_zombie.js
..... HTML DUMP
http://stackoverflow.com/questions/tagged/java?sort=newest&pagesize=15&page=1
>
任何建议,将不胜感激