7
ナイトメア/エレクトロンでダイナミックページングWebサイトをスクラップしようとしています。私は、悪夢の関数や論理を使って呼び出しを評価する連鎖を行うまでdoを実行する方法は見当たりません。ナイトメア/エレクトロン(ページスクレイプ)を使用した動的ページング
ここでは、単にフレーズをゴーグルし、結果のページを1ページから返す単純なコード例です。このコードを結果の各ページで続行したいと思います。
var Nightmare = require('nightmare');
var vo = require('vo');
vo(function*() {
var nightmare = Nightmare({ show: true });
var links = yield nightmare
.goto('http://www.google.com')
.wait('input[title="Search"]')
.click('input[title="Search"]')
.type('input[title="Search"]', 'Anequim Project')
.click('input[name="btnK"]')
.wait(600)
.evaluate(function(){
var linkArray = [];
var links = document.querySelectorAll('h3.r a');
for (var i = 0; i < links.length; ++i) {
linkArray.push(links[i].getAttribute('href'));
}
return linkArray;
});
yield nightmare.end();
return links;
})(function (err, result) {
if (err) return console.log(err);
console.log(result);
});
なぜリンク[0]、なぜ最初のリンクのみですか? – TheAnimatrix
@TheAnimatrix簡潔にするために、この例ではgoogleから返された各ページの最初のリンクを返します。 –
申し訳ありませんが、間違いだと思っていましたが、この解決策に問題があります。誰かがこの問題に遭遇した場合、最後のページには傷がつかないので、links.push()関数をループしているので、もう一度実行して最後のページを補うことができます – TheAnimatrix