Я по примерам написал функцию, в которой Nightmare парсит страницу.
При отладке я запускал функцию с одним параметром, и все работало.
Когда я делаю массив с данными и перебором запускаю функцию парсера, то мне кидает ошибку:
Код:
|
(node:3056) Warning: Possible EventEmitter memory leak detected. 11 close listen
ers added. Use emitter.setMaxListeners() to increase limit |
const Nightmare = require('nightmare');
const dream = Nightmare({show: 'true'});
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
myEmitter.on('error', (err) => {
console.log('whoops! there was an error');
});
myEmitter.on('db_connect', function(){
dbconn.connect(function(err){
if(err){
console.log('Database connection error');
}else{
console.log('Database connection successful');
}
});
});
dbconn.query('SELECT `id`, `operator`, `telefon`, `password`, `data` FROM `base` LIMIT 2', function (error, results, fields) {
if (error) throw error;
myEmitter.emit('db_connect');
for (i = 0; i < results.length; i++) {
myEmitter.emit('beeline', results[i].id, results[i].telefon, results[i].password);
}
});
myEmitter.on('beeline', function(base_id, login, pass){
console.log('<=====RUN balance: '+login+'=====>');
dream.goto('https://my.beeline.ru')
.insert('input[name="loginFormB2C:loginForm:login"]', login)
.insert('input[name="loginFormB2C:loginForm:passwordPwd"]', pass)
.insert('input[name="loginFormB2C:loginForm:password"]', pass)
.click('a[onclick="togglePasswordField(this)"]')
.wait(5000)
.end()
.catch((error) => {
console.error('Search failed:', error);
});
});
при таком коде ошибки нет, но и Nightmare не стартует, хотя лог записи из функции пишутся....
Подскажите как правильно запустить многопоточность в моем случае? Или если Nightmare не работает с многопоточностью, то как без нее по очереди выполнять функции?