Javascript 如何通过木偶师进行网页抓取

Javascript 如何通过木偶师进行网页抓取,javascript,node.js,puppeteer,Javascript,Node.js,Puppeteer,如果我转到https://investor.vanguard.com/mutual-funds/profile/VMMXX并执行document.querySelector(“[data ng if='productSummaryTitle']”)。innerText从控制台中,我得到了我所期望的:产品摘要 但是,当我尝试对puppeter执行相同操作时,我得到了未处理的PromiserEjectionWarning:错误:计算失败:TypeError:无法读取属性'innerText'的nul

如果我转到
https://investor.vanguard.com/mutual-funds/profile/VMMXX
并执行
document.querySelector(“[data ng if='productSummaryTitle']”)。innerText
从控制台中,我得到了我所期望的:
产品摘要

但是,当我尝试对
puppeter
执行相同操作时,我得到了
未处理的PromiserEjectionWarning:错误:计算失败:TypeError:无法读取属性'innerText'的null,该属性位于\uuuuuu puppeter\u Evaluation\u script\uuuuu:3:83
。我错过了什么

const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch({ headless: false })
    const page = await browser.newPage()
    await page.goto('https://investor.vanguard.com/mutual-funds/profile/VMMXX')

    const result = await page.evaluate(() => {
        let myText = document.querySelector("[data-ng-if='productSummaryTitle']").innerText
        return {
            myText
        }
    })

    console.log(result)

    browser.close()
})()

你可以先等那个选择器

const element=wait page.waitForSelector('[data ng if='productSummaryTitle']);
const text=await element.evaluate(el=>el.innerText);

感谢您提供答案。请编辑您的答案,包括对代码的解释,好吗?这将有助于未来的读者更好地理解正在发生的事情,尤其是那些对该语言不熟悉并努力理解这些概念的社区成员。
const puppeteer = require('puppeteer');

(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://investor.vanguard.com/mutual-funds/profile/VMMXX');
const element = await page.waitForSelector("[data-ng-if='productSummaryTitle']");
const text = await element.evaluate(el => el.innerText);
console.log(text);
await browser.close();
})();