用伪装者进行网页搜刮。如果无法多次获得选择器,请转到另一个元素

时间:2018-11-08 13:53:38

标签: javascript web-scraping puppeteer

我要从视频播放器的播放列表中保存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);

0 个答案:

没有答案