私はnodejsとzombiejsを使って、サイトから個人データを取得してきました。残念ながら、zombiejs が最初のリンクからのみデータを取得し、次にハングアップするという点で立ち往生しています。
私が従う手順は-
- ベースURLに移動
- ページ数を取得する
- 非同期ライブラリを使用して、毎回新しいブラウザ ウィンドウを開いて順番に取得します。注: まったく新しいブラウザー インスタンスを作成するのはコストがかかるため、まったく新しいブラウザー インスタンスではなく、ブラウザー ウィンドウのみを作成します。
これは私のコードです
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
>
任意の提案をいただければ幸いです