木偶使用无头假时

时间:2020-09-17 22:45:52

标签: google-chrome-devtools puppeteer chromium

我有一个解析特定网页的脚本。 当我将headless设置为false时,操纵up的人不会加载页面

 await page.goto('https://www.google.com', {
            waitUntil: 'load',
            // Remove the timeout
            timeout: 0
        });

我尝试了很多配置,例如:

 const args = [
        '--no-sandbox',
        '--enable-logging',
        ' --v=1',
        '--disable-gpu',
        '--disable-extension',
        '--disable-setuid-sandbox',
        '--disable-infobars',
        '--window-position=0,0',
        '--ignore-certifcate-errors',
        '--ignore-certifcate-errors-spki-list',
        '--user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3312.0 Safari/537.36"'
    ];



    const options = {
        args,
        headless: false, // default is true
        userDataDir: "./user_data",
        defaultViewport: null,
        devtools: true,
        ignoreHTTPSErrors: true,
    };

但是脚本会一直停留到await page.goto直到超时。

1 个答案:

答案 0 :(得分:0)

据我了解,您不是在解析google.com页面。 应该考虑的第一件事是waitUntil: 'load'。完成此操作后,它将认为在触发load事件时导航已完成。

当整个网页(HTML)完全加载,包括所有相关资源(如JavaScript文件,CSS文件和图像)时,就会触发load事件。

在您的情况下此事件没有在合理的超时内触发的可能性很大,因此,我建议不要依赖此waitUntil,而要使用另一个等待,例如存在某些选择器,例如< / p>

await page.goto('https://www.google.com');
await page.waitForSelector('[name="q"]');