ログインが必要なウェブサイトからデータをスクラップしようとしています。残念ながら、JSDom/NodeJSを使用して別の結果を得ています。これは、FFなどのWebブラウザを使用する場合とは異なります。特に、ユーザー名、パスワード、送信ボタンを使ってフォームにログインしているわけではありません。NodeJS/JSDomをスクラップする前に完全レンダリング待ちにする
私はJavascriptの多くを理解していますが、少なくとも非同期です。しかし、私は、JSDomの "done"関数がページの完全なレンダリングを同期して待つと思っていました。私は、HTTPSをシミュレートし、完全なdocument.readyが完了するのを待つことをやりたいと思います。
var jsdom = require("jsdom");
var jsdom_global = require("jsdom-global");
var fs = require("fs");
var jquery = fs.readFileSync("./jquery-3.1.1.min.js", "utf-8");
jsdom.env({
url: "https://wemc.smarthub.coop/Login.html#login:",
src: [jquery],
done: function (err, window) {
var $ = window.$;
if($("button#LoginSubmitButton").length) {
console.log('Click button found');
} else {
console.log('Click button not found');
}
// The following text boxes are not coming back:
// $("input#LoginUsernameTextBox")
// $("input#LoginPasswordTextBox")
// If I enable the line below, I see a lot less than I would if I
// do a view source in any reasonable browser.
//console.log($("body").html());
}
});