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