V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aglsv
V2EX  ›  Node.js

关于 puppeteer 的问题

  •  1
     
  •   aglsv · 2021-12-16 18:37:43 +08:00 · 4633 次点击
    这是一个创建于 832 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我通过 page.goto 来访问我要打印的页面,但是执行的时候就会提示net::ERR_NAME_NOT_RESOLVED,我想问问这是什么情况啊,我这个页面直接浏览器打开是可以成功打开的,好奇怪啊,是在调用之前 setCookie 有问题导致的吗

    第 1 条附言  ·  2021-12-17 10:56:13 +08:00

    域名的问题,重设了一下域名,他可以了,但是一直提示超时 timeout 30000ms exceeded,还是我直接浏览器打开就没有问题,想问问这个是为啥啊,url直接换成百度也不成,依旧提示这个

    let browser = await puppeteer.launch({
            headless: true,
            ignoreHTTPSErrors: true,
            args: [
                '--no-sandbox',
                '--disable-setuid-sandbox',
                '--disable-dev-shm-usage'
            ],
            executablePath: '/mnt/fun/fun/local-chromium/Linux-706915/chrome-linux/chrome'
        });
        
        const page = await browser.newPage();
        //将超时时间设置成无限
        page.setDefaultTimeout(0);
        page.setDefaultNavigationTimeout(0);
        //setCookie
        console.log('设置token')
        if (token && token !== '') {
             await page.setCookie({ name: 'localtoken', value: token, domain: "."+domain })
             
            };
        await page.setCookie({ name: 'source', value: 'ali',  domain: '.'+domain })
        //启动网页尝试5次
        let netErrorTime = 1;
        for (var urlNumber = 1; urlNumber < 6; urlNumber++){
            try {
                console.log('访问url次数',urlNumber,':',url)
                await page.goto(url, { waitUntil: 'domcontentloaded'});
                break
            }catch (e) {
                console.log('打开url错误开始重试')
                console.log(e)
                if (urlNumber >= 5) {
                    console.log('打开url失败')
                }
            }
        }
        //设置监控
        const tags = browser.pages()
        console.log('标签页', (await tags).length)
        const watchDog = page.waitForFunction('window.status == "loaded"', { timeout: 30 * 1000 });
        await watchDog;
    
    5 条回复    2021-12-17 17:44:53 +08:00
    libook
        1
    libook  
       2021-12-16 18:48:28 +08:00
    去网上搜 net::ERR_NAME_NOT_RESOLVED

    光看这个错误代码显然是 DNS 解析问题,可能你请求的 URL 有问题,域名没法正常解析,也有可能是你配置的 DNS 服务器有问题。
    yunying
        2
    yunying  
       2021-12-16 19:50:54 +08:00
    看起来是你访问页面的域名 dns 解析问题,所以你的应用放在哪运行?确保你应用及应用所在运行环境能访问这个网址。
    aglsv
        3
    aglsv  
    OP
       2021-12-17 10:56:45 +08:00
    @yunying 确实是域名配置的问题,改了域名不提示这个报错了,但是他现在一直提示超时,搞不明白咋整
    v2byy
        4
    v2byy  
       2021-12-17 17:05:11 +08:00
    @aglsv hang 在 page.waitForFunction, [waitForFunction]( https://pptr.dev/#?product=Puppeteer&version=v11.0.0&show=api-pagewaitforfunctionpagefunction-options-args), 只有你得 function 是 true promise 才会 resolve 。

    [window.status]( https://developer.mozilla.org/en-US/docs/Web/API/Window/status) 这个 API 已经 deprected 了,就不会 true 了。

    你可以用浏览器打开看 window.status 是空的
    aglsv
        5
    aglsv  
    OP
       2021-12-17 17:44:53 +08:00
    @v2byy 确实如此,太感谢了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5264 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:38 · PVG 17:38 · LAX 02:38 · JFK 05:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.