我试图用 puppeteer 废弃一些数据,但对于某些网站,querySelector 返回 null,我不知道出了什么问题。我在 stackoverflow 中找到了有关此问题的一些答案,但没有一个起作用。以下是带有不起作用的示例链接的代码。
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.macys.com/shop/product/the-north-face-mens-
logo-half-dome-t-shirt?ID=2085687&CategoryID=30423&cm_kws=2085687');
const textContent = await page.evaluate(() => {
return document.querySelector('.price');
});
console.log(textContent);
browser.close();
})();
最佳答案
可能这些元素是通过 javascript 异步加载的,并且当您调用 .evaluate() 时仍然不在 DOM 中。
尝试使用 puppeteer .waitForSelector 函数等待选择器
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.macys.com/shop/product/the-north-face-mens-
logo-half-dome-t-shirt?ID=2085687&CategoryID=30423&cm_kws=2085687');
await page.waitForSelector('.price');
const textContent = await page.evaluate(() => {
return document.querySelector('.price');
});
console.log(textContent);
browser.close();
})();
关于node.js - Puppeteer querySelector 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50663992/