代码之家  ›  专栏  ›  技术社区  ›  Norfeldt

JS puppeter等待页面加载完成

  •  1
  • Norfeldt  · 技术社区  · 7 年前

    看到这个之后 youtube video using puppeteer 我受了启发,玩了一会儿。但我似乎选择了一个错误的网站作为启动项目。

    const puppeteer = require('puppeteer')
    ;(async () => {
      const browser = await puppeteer.launch()
      const page = await browser.newPage()
    
      await page.goto('http://www.produktresume.dk/AppBuilder/search?page=0')
      page.once('load', () => {
        const drugs = page
          .evaluate(() =>
            [...document.querySelectorAll('div.entity-link')].map(item => item)
          )
          .catch(err => console.log(err))
        console.log(drugs[0])
      })
    
      await browser.close()
    })()
    

    我对我的问题的看法是,我没有在正确的时间调用evaluate—当页面加载时。

    1 回复  |  直到 7 年前
        1
  •  7
  •   Md. Abu Taher    7 年前

    完全没有必要使用 page.on('load')

    • waitUntil 选项开启 .goto 打电话。
    • waitForSelector

    用法,

    await page.goto('http://www.produktresume.dk/AppBuilder/search?page=0', {waitUntil: 'networkidle0'});
    await page.waitForSelector("#wrapper"); // Found on the page source code, wait for this to appear
    // the rest is just as usual
    const drugs = await page
    .evaluate(() =>
     [...document.querySelectorAll('div.entity-link')].map(item => item)
    )
    .catch(err => console.log(err))
    console.log(drugs[0])
    

    await .evaluate

    推荐文章