@jslby

Как контролировать количество табов в puppeteer?

Есть скрипт парсинга списка сайтов. Список урлов берется из файла. Там несколько миллионов урлов. Я перебираю файл через stream. И в каждой итерации открываю новую вкладку. Есть ли какой то параметр, что бы установить максимальное количество вкладок?
  • Вопрос задан
  • 367 просмотров
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
const PARES_CONCURENCY = 10; // сколько вкладок открываем за раз
runURLs([
  'https://site.com/url1',
  'https://site.com/url2',
  'https://site.com/url3',
  'https://site.com/url4'
  // ...
]).then(() => console.log('Готово!'));

async function runURLs(urls) {
  const browser = await puppeteer.launch();
  const tasks = urls.map(url => async () => {
    const page = await browser.newPage();
    await page.goto(url);
    // делаем что-то со страницей
    await page.close();
  });
  const queue = tasks.slice(PARES_CONCURENCY)[Symbol.iterator]();
  const runNextTask = () => {
    const {value, done} = queue.next();
    if(done) { return; }
    return value().then(runNextTask);
  };
  await Promise.all(tasks.slice(0, PARES_CONCURENCY).map(task => task().then(runNextTask)));
  await browser.close();
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
BRAGA96
@BRAGA96
Самому делать очередь, кидать туда вкладки и удалять по мере парсинга и контролировать количество открытых.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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