Web ページのコンテンツをスクレイピングするために nightmare.js を使用しています。
悪夢のインスタンスを認証した後、(ログインが必要な) 複数のページをループしてから、すべてのページの読み込みを実行する run メソッドを呼び出します。
各ページから特定のコンテンツを取得したいので、evaluate 関数を呼び出して、ブラウザー スコープ内で実行していることを確認します。評価関数から返されるものは何でも run メソッドの引数になります
しかし、評価関数を複数回 (ページごとに 1 回) 実行しようとしています。ただし、評価関数は出力を run メソッドに 1 回しか返すことができません。コンテンツをグローバル変数 (メイン スコープ内) にプッシュしようとしましたが、ブラウザー スコープ内からアクセスできません。
複数の評価メソッドを1つの悪夢のインスタンスで実行し、それぞれから情報を抽出する方法について誰かアドバイスできますか?
var Nightmare = require("nightmare");
//Creates the authenticated nightmare instance
var scraper = new Nightmare()
.goto('https://www.example.com/signin')
.type('#login', 'username')
.type('#password', 'password')
.click('#btn')
.run(function(err, nightmare) {
if (err) {
console.log(err);
}
console.log('Done.');
});
for (var i = 0; i < 4; i++) {
scraper
.goto('https://www.example.com/page'+i)
.wait(1000)
.evaluate(function(){
return $('#result > h3').text()
})
}
scraper.run(function(err, result) {
console.log(result)
if (err) {
console.log(err);
}
}); )