Соскоб с помощью Puppeteer. Если не удается получить селектор несколько раз, переходите к другому элементу. - PullRequest
0 голосов
/ 08 ноября 2018

Я сохраняю URL из плейлиста видеоплеера.

Последовательность действий:

  1. Нажмите на видео
  2. Найти элемент видео и получить его src
  3. Добавить src в массив

Все идет хорошо, но иногда есть элемент, от которого я не могу получить src. Итак, что я хочу сделать, это попытаться получить элемент src 5 раз, а если он не получится в 5 раз, тогда я должен вставить значение счетчика (i) в массив вместо URL и нажать на следующее видео и получите src следующего элемента. Пожалуйста, дайте мне знать, как я могу это сделать.

Вот мой текущий код, который нажимает один за другим и получает элемент src и просто зависает, если не может получить элемент src:

const links = await page.evaluate((SELECTORS) => {
    return new Promise((resolve, reject) => {
        const items = document.querySelector(SELECTORS.list).childNodes;
        let i = 0;
        const urls = [];
        const video = document.querySelector(SELECTORS.video);

        let counter = 0;
        const limit = 10;
        var timer = setInterval(() => {
            const url = video.getAttribute('src');
            if (!urls.includes(url)) {
                urls.push(url);
                i++;
                if (items[i]) {
                    setTimeout(items[i].click(), 2000);
                } else {
                    clearInterval(timer);
                    resolve(urls);
                }
            }
        }, 10);
        items[0].click();
    });
}, SELECTORS);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...