AsviS
@AsviS
начинающий

Как сделать задержку парсинга на node.js?

Доброго времени суток!
суть вопроса: У меня есть скажем 12 000 страниц одного сайта, при обычном парсинге с помощью request
и cheerio через несколько страниц сайт падает с ошибкой. Как мне при парсинге осуществить задержку и последовательный парсинг контента 12 000 страниц из файла?
Заранее спасибо!
  • Вопрос задан
  • 207 просмотров
Пригласить эксперта
Ответы на вопрос 1
lazalu68
@lazalu68
Salmon
А что значит сайт падает с ошибкой? В смысле перестаёт возвращать адекватный ответ?

Отвечая на вопрос: в своё время чтобы обходить всевозможные механизмы защиты от парсинга разбивал процедуру парсинга на много много частей: парсинг одного конкретного элемента, bunch (парсинг группы элементов), сессия (bunch состоящий из bunch'ей).

В коде банч от сессии отличался только количеством обработанных элементов. То есть алгоритм парсинга получался какой-то такой:
Обрабатываем элемент №i
  Если ошибка, то
    ждём SINGLE_REQUEST_TIMEOUT
    пробуем еще раз
  i++
  Если остаток от деления i на ITEMS_IN_BUNCH равен нулю, то
    ждём BUNCH_TIMEOUT
  Иначе Если остаток от деления i на ITEMS_IN_SESSION равен нулю, то
    ждём SESSION_TIMEOUT
  Иначе 
    ждём SINGLE_REQUEST_TIMEOUT

Надеюсь понятно объяснил. Каждый из таймаутов охватывает временные промежутки разных масштабов - от секунд и минут, до часов и дней. Например, SINGLE_REQUEST_TIMEOUT может быть 1000мс, BUNCH_TIMEOUT - 30000мс, а SESSION_TIMEOUT может превосходить рамки часов/суток. С таким подходом пока ни разу не сталкивался с проблемами парсинга
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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