为了账号安全,请及时绑定邮箱和手机立即绑定

替换 Puppeteer 抓取结果中缺失的元素

替换 Puppeteer 抓取结果中缺失的元素

汪汪一只猫 2021-06-13 13:41:23
我使用脚本通过 Puppeteer 递归抓取数据。它工作正常,但有时页面结构中缺少元素,此时脚本崩溃。我想设置一个条件,以防元素丢失。我尝试了几种添加条件的方法,但没有成功,比如使用 if/else 来检查元素是否存在。这里有一个有趣的线程:Continue on Null Value of Result (Nodejs, Puppeteer)但我无法在我的 Array.from 结构中复制解决方案。有没有办法实现这一目标?欢迎任何开始的方向。这是我查询元素的脚本部分:  const results = await page.evaluate(() =>           Array.from(document.querySelectorAll('article.main-wrap section'), value => ({             name: value.querySelector('h1.title').innerText.trim(),             frame: value.querySelector('ul li:nth-child(3)').innerText.trim(),             // more elements to scrape          }))    );当页面结构中缺少预期的元素时,我想替换键值对中的值,类似于“null”。也许在 Array.from 中可能使用某种三元语法,但我找不到任何东西。
查看完整描述

1 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

您可以使用三元运算符来检查是否querySelector返回真实值:


const results = await page.evaluate(() => 

    Array.from(document.querySelectorAll('article.main-wrap section'), value => ({

        name: value.querySelector('h1.title') 

            ? value.querySelector('h1.title').innerText.trim()

            : 'falsy value',

        frame: value.querySelector('ul li:nth-child(3)') 

            ? value.querySelector('ul li:nth-child(3)').innerText.trim()

            : 'falsy value',

    }))

);


查看完整回答
反对 回复 2021-06-18
  • 1 回答
  • 0 关注
  • 280 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信