Electron アプリケーションから Nightmare を使いたい時の方法。
スクレイピング中に動的HTMLが取れない場合などに。
Eramthgin を使う
Eramthgin を使うとちゃんと動く。
https://www.npmjs.com/package/eramthgin
npm install eramthgin
メインプロセスで呼び出す
基本的に nightmare と同じ。
main.js
const nightmare = require('eramthgin');
const n = new nightmare({
show: true
});
preload.js に渡して処理を書く
main.js で global を経由して preload.js に渡す。
main.js
const mainWindow = new BrowserWindow({
width: 1200,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js')
}
});
global.mainWindow = mainWindow;
mainWindow.nightmare = n;
preload.js では global から取得して使う。
preload.js
const mainWindow = remote.getGlobal('mainWindow');
const nightmare = mainWindow.nightmare;
nightmare.goto('https://www.google.com/')
.insert('input[name=q]', 'what is google')
.click('input[name=btnK]')
preload.js から直接 nightmare を呼び出せなかったので、備忘録として。