Задать вопрос
Absm50336
@Absm50336
Заметка: написать о себе

В чем разница между selenium, playwright и puppeteer?

Хочу написать парсер, который будет заходить раз в сутки на 20 сайтов, собирать инфу (таблица с оборудованием и ценой) и писать в конце рабочего дня отчет о собранной инфе в телегу.
- В 15 годах писал похожий парсер, используя node, fetch и axios, но сейчас часть сайтов возвращает html без таблиц с ценами, почему?
- Для чего нужны selenium, playwright и puppeteer, если я могу через fetch и axios все получить?
- Если все же использовать selenium, playwright и puppeteer, что из них лучше на данный момент? Можно ли их с nodejs использовать?
- Часто вижу о упоминание CDP в контексте парсинга, это зачем и для чего нужно?
- Что использовать для отправки сообщений в телегу?
  • Вопрос задан
  • 198 просмотров
Подписаться 3 Простой Комментировать
Решения вопроса 1
Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting
- В 15 годах писал похожий парсер, используя node, fetch и axios, но сейчас часть сайтов возвращает html без таблиц с ценами, почему?

- Для чего нужны selenium, playwright и puppeteer, если я могу через fetch и axios все получить?

Скорее всего проблема в динамическом формировании этих данных на странице. Тут сразу 2 правильных ответа, можете и не можете единовременно:
- Можете - в инструментах разработчика браузера смотрите, с какого адреса приходят данные и затем дергайте данные напрямую, минуя сам сайт, в таком случае можно продолжать использовать fetch.
- Не можете - если вариант выше сложен, то вам нужен инструмент, который сможет выполнять js на странице. fetch/axios возвращают первый ответ сервера, т.е. js на тот момент еще не выполнился на странице, соответственно данные не были подгружены. Вопрос рендера js на странице решают инструменты по типу selenium, playwright и puppeteer.
- Если все же использовать selenium, playwright и puppeteer, что из них лучше на данный момент?

Вначале нужно определить, что понимается под "лучше":
- Можно использовать критерий современности, тогда puppeteer отпадает (playwright написала команда puppeteer).
- Можно использовать критерий производительности, тогда selenium проигрывает playwright сразу по 2 пунктам, по прожорливости и отклику на действия.
- Можно использовать критерий обнаружения анти-бот системами, тогда selenium (с учетом undetected_chromedriver) проигрывает playwright тем, что имеет явную дополнительную задержку в ~100-300мс при выполнении CDP команд, что прям заметно. Playwright такой задержки либо не имеет вообще, либо она в рамках погрешности.
Можно ли их с nodejs использовать?

Selenium написан на java, но так же имеется возможность использования его с nodejs. Playwright вообще написан на ts, все примеры документации и сопутствующие библиотеки с большей вероятность будут писаться под ts по умолчанию.
- Часто вижу о упоминание CDP в контексте парсинга, это зачем и для чего нужно?

CDP (Chrome DevTools Protocol) грубо говоря - это некие "низкоуровневые" команды для "chromium based" браузеров, который позволяют этим браузером управлять. В playwright так реализованы большинство "высокоуровневых" команд, например: при использовании playwright мы пишем await locator.getAttribute(name), а playwright использует аналогичную команду из CDP DOM.getAttributes или DOM.describeNode.
- Что использовать для отправки сообщений в телегу?

Если речь идет об nodejs, то Telegraf.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
liaFcipE
@liaFcipE
> но сейчас часть сайтов возвращает html без таблиц с ценами, почему?

Потому, что эра SSG ушла, все пилят модные SPA, все твои таблицы в рантайме рисует дажваскрипт, делая запросы к апи.

> Для чего нужны selenium, playwright и puppeteer, если я могу через fetch и axios все получить?

В основе своей они вообще для визуального тестирования, переиспользовать можно и для парсинга, просто ты не всегда можешь через fetch вытянуть нужные данные, вот тогда они и нужны.

Если все твои юзкейсы закрывает простой запрос куда либо, то тащить хедлес браузер - очевидный оверхед.

> Если все же использовать selenium, playwright и puppeteer, что из них лучше на данный момент? Можно ли их с nodejs использовать?

Лучший тот, кто может выполнять нужные задачи максимально быстро и просто, ну и доку нормальную имеет или просто лично тебе нравится.

Мне пупеттир нравится, я им пользовался, удобный API.

> CDP в контексте парсинга

Это просто базовые возможности тех фреймворков для визуального тестирования, протокол, который позволяет управлять браузером програмно, выполнить какой-то JS в контексте страницы, тригернуть ивенты, хукнуть сетевые запросы, юзкейсов масса.

> - Что использовать для отправки сообщений в телегу?
Да хоть курл кидай на вебхук ТГ апи, что удобно, библиотек в npm миллион, отсортируй по звездам или скачкам.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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