Javascript 替换木偶师刮片结果中缺失的元素

Javascript 替换木偶师刮片结果中缺失的元素,javascript,puppeteer,Javascript,Puppeteer,我使用一个脚本来递归地使用Puppeter抓取数据。它工作正常,但有时页面结构中缺少元素,此时脚本崩溃 我想设置一个条件,以防元素丢失。我尝试了几种方法来添加条件,但没有成功,比如用if/else来检查元素是否存在。这里有一个有趣的线索:但我无法在Array.from结构中复制解决方案。有没有办法做到这一点?欢迎提供任何出发方向 下面是脚本中我查询元素的部分: const results = await page.evaluate(() => Array.from

我使用一个脚本来递归地使用Puppeter抓取数据。它工作正常,但有时页面结构中缺少元素,此时脚本崩溃

我想设置一个条件,以防元素丢失。我尝试了几种方法来添加条件,但没有成功,比如用if/else来检查元素是否存在。这里有一个有趣的线索:但我无法在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
          }))
    );

当页面结构中缺少期望元素时,我希望在键、值对PAR中替换值,如“NULL”。可能在Array.from中使用了某种三元语法,但我找不到任何东西。

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

const results=wait page.evaluate(()=>
from(document.querySelectorAll('article.main-wrap section'),值=>({
名称:value.querySelector('h1.title')
?value.querySelector('h1.title').innerText.trim()
:“falsy值”,
frame:value.querySelector('ul-li:n个子(3)'
?value.querySelector('ul li:n个子(3)').innerText.trim()
:“falsy值”,
}))
);

如果(!results.length){}完成了这项工作,就不会
了吗?我恐怕不会,因为每个页面片段都由大约八个查询(名称、帧等)组成,而且有时只缺少一两个查询,而不是整个数组。当然,如果我正确理解了你的建议,那么
frame:value.querySelector('ulli:nth child(3)').innerText.trim()| |“NoFrame”如何?不幸的是,我已经尝试过类似的解决方案,但仍然无法计算,错误为“无法读取null的属性'innerText'”。
value.querySelector('ul li:nth child(3)')?value.querySelector('ul li:n子(3)')。innerText.trim():'foo'