简体   繁体   English

如何在 Puppeteer 中使用 return 和 page.goto?

[英]How use return with page.goto in Puppeteer?

I'm using return inside await page.goto in Puppeteer and I don't know why return doesn't work.我在Puppeteer中的await page.goto中使用return ,我不知道为什么return不起作用。 Here's a code sample:这是一个代码示例:

This line below doesn't work:下面这一行不起作用:

return elements // return data collected

Full code:完整代码:

 /* --- Lógica para coletar os dados de cada página --- */
        await page.goto(url, { waitUntil: 'networkidle0' })
        let data = await page.evaluate(() => {
            const root = Array.from(document.querySelectorAll('tr.team'))
            let elements = root.map((e) => ({
                id: Math.random().toString(16).slice(2),
                date: new Date().toJSON().slice(0, 10).replace(/-/g, '/'),
                teamName: e.querySelector('td.name').innerText,
                wins: e.querySelector('td.wins').innerText,
                loses: e.querySelector('td.losses').innerText,
            }))
            // console.log('console.log(elements)') // DEBUG
            console.log('return elements executado') // DEBUG
            return elements // return data collected
        })

How do make return work?如何进行退货

I found the answer.我找到了答案。 My let in .push was wrong.let .push出错了。

After this block code:在这个块代码之后:

return elements // return data collected

My .push stay targeted to dataFromPages.push(...elements) .我的.push保持针对dataFromPages.push(...elements)

My array return was empty.我的数组return是空的。 This is a beginner wrong.这是初学者的错误。

I put the right way, dataFromPages.push(...data) with data let.我采用了正确的方式, dataFromPages.push(...data)data let。

Thank you guys.谢谢你们。

Full correct code to help community:帮助社区的完整正确代码:

for (let i = 0; i < urls.length; i++) {
        let url = urls[i]
        console.log(`Coletando dados da url: ${chalk.underline(url)}`)

        /* --- Lógica para coletar os dados de cada página --- */
        await page.goto(url, { waitUntil: 'networkidle0' })
        let data = await page.evaluate(async () => {
            const root = Array.from(document.querySelectorAll('tr.team'))
            let elements = root.map((e) => ({
                id: Math.random().toString(16).slice(2),
                date: new Date().toJSON().slice(0, 10).replace(/-/g, '/'), //TODO: Colocar a HORA também
                teamName: e.querySelector('td.name').innerText,
                wins: e.querySelector('td.wins').innerText,
                loses: e.querySelector('td.losses').innerText,
            }))
            return elements // return data collected
        })
        dataFromPages.push(...data)
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Puppeteer page.goto(url) 内部循环不等到加载 - Puppeteer page.goto(url) inside looping not waiting until load 我不能使用page.goto() - Puppeteer从一个页面转到另一个页面 - I can't go from a page to another using page.goto() - Puppeteer 在 puppeteer/JavaScript 中重试 page.goto、page.waitForNavigation 等的最佳实践 - Best Practice for retrying page.goto, page.waitForNavigation etc. in puppeteer/JavaScript URL字符串中最多可以传递给Puppeteer page.goto(url)函数的字符是什么 - What are the max chars in a URL string that can be passed to the Puppeteer page.goto(url) function Puppeteer 如何直接转到所需的页面 - Puppeteer how to goto directly desired page 如何在page.goto函数中的每个请求上设置超时选项 - How can I set timeout option on every request in page.goto function 人偶的page.goto(url)失败,我想正常关闭页面/退出,以便我的其他JEST测试可以继续运行 - Puppeteer's page.goto(url) fails, I want to close the page/exit gracefully so my other JEST tests can continue to run 仅在 page.goto(url) 实际加载页面时执行 page.evaluate() - Only perform page.evaluate() when page.goto(url) actually loads the page Puppeteer 无法转到 web 页面获取选择器 - Puppeteer cannot goto web page to get selector puppeteer如何返回page.on响应值 - puppeteer how to return page.on response values
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM