koa2 UnhandledPromiseRejectionWarning

发布于 2022-09-06 23:13:15 字数 1805 浏览 15 评论 0

  1. 运行下面代码后报错,不知道怎么修改,望大神指出错误点。
  2. 报错
(node:2920) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejec
tion id: 1): Error: Navigation Timeout Exceeded: 30000ms exceeded
(node:2920) [DEP0018] DeprecationWarning: Unhandled promise rejections are depre
cated. In the future, promise rejections that are not handled will terminate the
 Node.js process with a non-zero exit code.
  1. 代码如下
const puppeteer = require('puppeteer')

const url = `https://movie.douban.com/tag/#/?sort=R&range=6,10&tags=%E7%94%B5%E5%BD%B1,%E6%BE%B3%E5%A4%A7%E5%88%A9%E4%BA%9A`

const sleep = time => new Promise(resolve => {
  setTimeout(resolve, time)
})

;(async () => {
  console.log('Start visit the target page')

  const browser = await puppeteer.launch({
    args: ['--no-sandbox'],
    dumpio: false
  })

  const page = await browser.newPage()
  await page.goto(url, {
    waitUntil: 'networkidle2'
  })

  await sleep(3000)

  await page.waitForSelector('.more')

  for (let i = 0; i < 2; i++) {
    await sleep(3000)
    await page.click('.more')
  }

  const result = await page.evaluate(() => {
    var $ = window.$
    var items = $('.list-wp a')
    var links = []

    if (items.length >= 1) {
      items.each((index, item) => {
        let it = $(item)
        let doubanId = it.find('div').data('id')
        let title = it.find('.title').text()
        let rate = Number(it.find('.rate').text())
        let poster = it.find('img').attr('src').replace('s_ratio', 'l_ratio')

        links.push({
          doubanId,
          title,
          rate,
          poster
        })
      })
    }

    return links
  })

  browser.close()

  process.send({result})
  process.exit(0)
})()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

恬淡成诗 2022-09-13 23:13:15

首先你这个错误信息,是你没有处理promise的错误情况,你要在你async函数中添加try....catch进行异常捕获,方便调试错误信息

第二你用 puppeteer 获取信息的代码是正确的,你把

process.send({result})
  process.exit(0)

注释掉就正确了

你看是不是你的主进程报的错

琴流音 2022-09-13 23:13:15

刚好我也在练手这个项目,你加梯子,就可以爬到了,默认欲歌浏览器给墙了,现在双层墙。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文