Парсинг с помощью NodeJS
Добрый день, Всем спецам по NodeJS!
Не могу понять, подходит ли под мою задачу NodeJS. У меня есть задача одновременного парсинга нескольких тысяч WEB страниц, контент на которых формируется динамически. Грубо говоря — представьте 5 000 открытых страниц браузера. Контент на них меняется раз в несколько секунд. И раз в секунду с каждой страницы нужно присылать обновления. Задача скажем так — нетривиальная) Я могу это делать с помощью запуска JS-скриптов парсинга на каждой из страниц. JS-скрипт пробегает по нужным элементам, формирует JSON скрипт, выводит его в консоль, где я уже забираю его, обрабатываю, и загружаю в базу. Но это все ТАААК ресурсоемко) Я экспериментирую на 20 открытых страницах — и моя виртуалка уже на половину загружена) А мне нужно это делать в пике с несколькими тысячами страниц. Я ищу средства, которые бы не были такими ресурсоемкими как обычный браузер. И конечно я абсолютно понимаю, что в любом случае такая задача потребует ресурсов. Но хотелось бы ограничиться несколькими серверами. А лучше делать все это в облаке и ресурсы брать по мере необходимости. Как Вы считаете — поможет ли описанная связка NodeJS + headless браузер (например Puppeteer) в выполнении такой задачи? И будет ли это более красивым и элегантным решением, чем просто открытые окна браузера?) И еще: Я пока не углублялся в nodeJS. Может ли он держать много страниц открытыми, выполнять на них JS-скрипты, распарсивать JSON, и SQL запросами загружать результаты в базу? P.S. У многих возникнет резонный вопрос - зачем парсить браузером и JS, когда можно просто посылать GET запросы, и парсить JSON - ответы? Отвечаю: речь идет о ~50 разных сайтов. У каждого своя схема работы, свой JSON, где то это вообще не JSON - а что то другое. И разбираться во всем этом не хочется. Кроме того - в JSON-е от этих сайтов приходит инфа, которая становится понятна только тогда, когда сама страница её распарсит и подставит в нужные поля. Вообщем парсинг JS-скриптами - это универсальное решение, которое подойдет к любому сайту. Но за эту универсальность нужно будет заплатить ресурсоемкостью. Спасибо. |
Часовой пояс GMT +3, время: 01:30. |