node.js - Puppeteer querySelector 返回 null

标签 node.js web-scraping jquery-selectors puppeteer

我试图用 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/

相关文章:

html - 网站元素显示在浏览器中,但当我尝试使用检查元素访问它时隐藏

python - 在python上使用selenium或beautifulsoup从带有链接的页面中抓取数据,没有类,没有id

jquery - 如何确定 Jquery 中另一个元素触发的单选框的状态?

jquery - 是否有 "or"属性选择器,例如 input[type=button|text]?

node.js - React Native、Node js 身份验证

node.js - Mongoose findOneAndUpdate 更新多个字段

javascript - casperjs评估不执行

jquery - 使用Jquery,如何抓取类为 'c1'并且href中有abcdef的所有链接

javascript - Node.js:远程提交表单

node.js - 如何设置一个新的key Redis回调