@ascold2013

Error: Socket hang up. Как обработать ошибку при парсинге страниц?

Здравствуйте! Не могу разобраться в чем проблема - при парсинге выдает ошибку Socket hang up, после чего массив companiesList почему то опустошается. Кто может подсказать - в чем ошибка то? Или хотябы где ее искать.
Мой код:
const tress = require('tress')
const needle = require('needle');
const cheerio = require('cheerio');
const config = require('../config.json')
const resolveURL = require('url').resolve;

module.exports = function (vacancyUrls) {

	// find links to vacancies in vacancies list by url
	const findCompanyLink = (vacancyUrl) => new Promise ((resolve, reject) => {

		let companiesList = []

		const q = tress((url, callback) => {
			needle.get(url, function(err, res) {
				if (err) console.log(err, companiesList.length, url)
				if (res && res.body) {
					const $ = cheerio.load(res.body);
					companiesList.push($('dd>a').attr('href'))
				}
				callback()
			})
		}, 10000)

		q.drain = function(){
			resolve(companiesList)
		}

		q.push(vacancyUrl)
		
	})
	
	let promises = []

	vacancyUrls.forEach(vacancyUrl => {
		promises.push(findCompanyLink(config.baseUrl + vacancyUrl))
	})

	return Promise.all(promises)

}


Как тут устроено - модуль принимает массив ссылок на вакансии. Выкачивает эти страницы с помощью метода findCompanyLink, который пушит ссылку на компанию, опубликовавшую эту вакансию.
Иногда в err приходит ошибка о которой писал. Вот и вопрос - как "обойти" такую страницу, не положив весь процесс, и не испортив массив companiesList ?
  • Вопрос задан
  • 1350 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы