【问题标题】:Puppeteer page.$$ returns empty arrayPuppeteer page.$$ 返回空数组
【发布时间】:2021-12-02 00:51:06
【问题描述】:

我正在开发一个简单的scraper,但我无法解决这个问题。 每次我运行它时它都会返回一个空数组,但是当我在控制台上运行 querySelectorAll 时,该站点确实包含元素并返回一个 NodeList。

有什么我可能会忽略的吗?我已经尝试过 waitForSelector 来等待它,但没有运气,它只是给出了一个超时。

谢谢

const scraper = async () => {
    try {
        const browser = await puppeteer.launch({ args: ['--no-sandbox', "--disabled-setupid-sandbox"]});
        const page = await browser.newPage();
        await page.goto('https://randomtodolistgenerator.herokuapp.com/library');
        const elements = await page.$$(".card-body");
        console.log(elements);
      
        await browser.close(); 
    } catch (error) {
        console.log(error)
    }
  
}

【问题讨论】:

  • 页面已经加载,并不意味着内容就在那里。如果你 curl 那个 URL,你会得到一个页面,里面基本上什么都没有,所以你必须让 Puppeteer 等待你的内容甚至由 main.304f6764.chunk.js1.304f6764.chunk.js 的任何捆绑包生成。
  • “为什么没有元素”问题的答案总是你必须等待它或者它在 iframe 中。

标签: node.js web-scraping puppeteer


【解决方案1】:

事实证明,由于某种原因,WSL 无法运行 Chromium。

我最终在虚拟机上安装了 Linux,它现在可以工作了。

【讨论】:

    猜你喜欢
    • 2019-07-03
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多