替换 Puppeteer 抓取结果中缺失的元素
Replace missing element in Puppeteer scraping results
我使用脚本通过 Puppeteer 递归抓取数据。它工作正常,但有时页面结构中缺少一个元素,此时脚本崩溃。
我想设置一个条件,以防元素丢失。我尝试了几种添加条件但没有成功的方法,例如 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
}))
);
当页面结构中缺少预期元素时,我想替换键值对中的值,例如“null”。也许在 Array.from 中可能使用了某种三元语法,但我找不到任何东西。
您可以使用三元运算符来检查 querySelector
returns 是否为真值:
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',
}))
);
我使用脚本通过 Puppeteer 递归抓取数据。它工作正常,但有时页面结构中缺少一个元素,此时脚本崩溃。
我想设置一个条件,以防元素丢失。我尝试了几种添加条件但没有成功的方法,例如 if/else 来检查元素是否存在。这里有一个有趣的线程:
这是我查询元素的脚本部分:
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 中可能使用了某种三元语法,但我找不到任何东西。
您可以使用三元运算符来检查 querySelector
returns 是否为真值:
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',
}))
);