Я сканирую веб-сайт с помощью Nodejs, и у меня возникла проблема с ошибкой ETIMEOUT.
И кажется, что это работает хорошо, но иногда это показывает мне ошибку, и все приложение останавливается.
Я думаю, что запрашиваю слишком много данных за один раз, поэтому веб-сервер на некоторое время отказал мне.И это выдает мне ошибку.
Но когда я перезагружаю приложение снова, оно снова работает хорошо и внезапно останавливается.
Мой полный код выглядит следующим образом.
let postNumber;
request.get({
url: 'https://www.clien.net/service/group/community'
}, function (err, response, body) {
let $ = cheerio.load(body);
postNumber = $('.list_item.symph_row').attr('data-board-sn');
})
function getData() {
return new Promise(function (resolve, reject) {
request.get({
url: `https://www.clien.net/service/board/park/${postNumber}`
}, function (err, response, body) {
if (err) {
console.log(err);
}
let $ = cheerio.load(body);
let title = $('.post_subject span').text();
let author = $('.nickname span').text();
let content = $('.post_article.fr-view').text().replace(/(\r\n|\n|\r|\t|\\)/gm, "");
if (title) {
resolve('Found Data Title!!'); // Accept
if (author === '') {
author = $('.nickname img').attr('alt');
}
console.log(`Now Processing POST NUMBER : ${postNumber}`);
db.query(`INSERT INTO post (postNumber, title, author, content) VALUES (?,?,?,?)`, [postNumber, title, author, content]);
postNumber--; //postNumber Decrease
getData(); // run again
} else {
// reject('DATA NULL PAGE'); // Reject if sometimes no data
postNumber--; //postNumber Decrease
getData(); // run again
}
})
})
}
getData();
Так что я думаю, что если я смогу проигнорировать сообщение об ошибке и просто снова запустить функцию getData (), она будет работать.Поэтому я поставил getData ();функция в
request.get({
url: `https://www.clien.net/service/board/park/${postNumber}`
}, function (err, response, body) {
if (err) {
console.log(err);
getData();
}
Но, похоже, это не ответ.Как я могу исправить эту проблему.