Bandicoot
@Bandicoot
Вась-программист

Хорошо ли подходит NodeJS для парсинга сайтов?

В последнее время по работе часто приходится заниматься парсингом сайтов. Сейчас использую в основном PHP Simple DOM HTML Parser, но хочется чего-то более продвинутого - например, чтобы была возможность автоматически ходить по ссылкам в постраничной навигации итд. Посматриваю на NodeJS и его модули. Стоит ли углубляться в эту тему или эта инфраструктура не сильно отличается по возможностям от решений на базе PHP?
  • Вопрос задан
  • 1987 просмотров
Пригласить эксперта
Ответы на вопрос 9
maxfarseer
@maxfarseer
https://maxpfrontend.ru, обучаю реакту и компании
отлично подходит, как уже указано было выше - phantomjs очень крут!
Ответ написан
Комментировать
muhammad_97
@muhammad_97
PHP-разработчик
Хорошая альтернатива фантому - Nightmare: https://github.com/segmentio/nightmare
Ответ написан
@spotifi
Дело не в языке. А в инструменте.
Например Scrapy - отличный инструмент. Он на Python. Но думаю есть и на PHP и JS (Node) нужно только поискать.

Если же речь о полной эмуляции JS, то тогда да, только JS.
Но не NodeJS - это по сути косольный JS.
А headless-браузер на JS - это и обеспечивает полную эмуляцию DOM браузера и полное управление. Например, PhantomJS. Но если для парзинга сайта не нужна полная эмуляция DOM (сайт не является сайтом с навороченным AJAX), то нет необходимости в PhantomJS

Тогда ищи просто удобную библиотеку для твоего любимого языка...
Ответ написан
Комментировать
sim3x
@sim3x
Когда у тебя в руках лом - все кажется сайтом

Стоит посмотреть на golang
Ответ написан
@private_tm
JAVA dev
Нормально. Можешь еще глянуть в сторону phyton.

но хочется чего-то более продвинутого - например, чтобы была возможность автоматически ходить по ссылкам в постраничной навигации и тд.
Ну это по моему везде реализовывать надо)

кстати PHP Simple DOM HTML Parser уметь xpath тоже мощная штука(если изучить там по факту нечего учить)
Ответ написан
Комментировать
@Sstrax
Никто не пишет про cheerio.

Неужели он на столько плох? Мне показалось, что он достаточно облегчен и алгоритм прост (загрузка-расчленение-сохранение). Возникла только проблема с циклом. Когда прогоняешь его по всем страницам в цикле - он пытается этот цикл выполнить одновременно(синхронно). А вот как заставить цикл продолжать выполнение только после завершения предыдущего шага - не понял пока. Если можете - ткните носом, пожалуйста!

Идея была написать свой API к сайтам, которые этого не предусматривают...
Ответ написан
kumaxim
@kumaxim
Web-программист
Посмотри в сторону ANTLR. Сам инструмент на Java, но есть targer в JS
Ответ написан
Комментировать
hOtRush
@hOtRush
я бы посоветовал питон или го, парсить ноджсом, еще и с фанотомжсом - потребуется туча железных ресурсов
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы