Вот преимущества каждого метода на мой взгляд:
Преимущество нескольких браузеров:
- Отдельные процессы: в случае сбоя одного браузера другие браузеры продолжают работать
Преимущество одного браузера (с несколькими страницами):
- Меньше использования памяти: хотя на самом деле использование памяти и процессора в большой степени зависит от выполняемой задачи (скриншот, манипуляции с DOM)
- Файлы cookie (и другие данные) являются общими
Существует также возможность использования нескольких контекстов , для которых требуется меньше памяти, чем в двух отдельных браузерах, но нет общих файлов cookie.
Так что на самом деле, вы, вероятно, должны просто попробовать оба варианта. Возможно, вы захотите взглянуть на библиотеку puppteer-cluster , которую я написал, которая также занимается обработкой ошибок и перезапуском браузера в случае сбоев.
Вы можете просто написать свой код и переключаться между несколькими браузерами и несколькими страницами одной строкой:
const cluster = await Cluster.launch({
concurrency: Cluster.CONCURRENCY_PAGE, // which kind of concurrency
maxConcurrency: 2, // number of parallel workers
});
Просто замените CONCURRENCY_PAGE
на CONCURRENCY_BROWSER
, чтобы попробовать несколько браузеров. Существует также третий вариант CONCURRENCY_CONTEXT
, который вы можете попробовать.