具有puppeteer的查询选择器返回空数组

时间:2019-06-16 14:37:42

标签: node.js puppeteer

我写了一个简短的抓取工具,使用Puppeteer从页面上提取了一些标题。虽然我可以抓取单个元素(例如单独的h2),但是尝试抓取并返回一系列项目并没有成功。

主要是我试图确保查询选择器正常运行,可以在Chrome开发工具中运行Array.from(document.querySelectorAll('div.landscape h3.title')).map(partner => partner.textContent)并获取所需的数组,但是在脚本中运行该数组会返回一个空数组[]。如前所述,仅使用一个单独的querySelect('h2')似乎可以正常工作。

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://marketingplatform.google.com/about/partners/find-a-partner');

  const titlesArray = await page.evaluate(
    () => Array.from(document.querySelectorAll('div.landscape h3.title')).map(partner => partner.textContent)
  );


  console.log(titlesArray);


  await browser.close();
})();

似乎没有错误消息产生,只是一个空数组的控制台日志。

1 个答案:

答案 0 :(得分:1)

页面首次加载时,它会显示“正在加载”文本并从此处重定向/加载数据。

您必须等待元素出现在DOM中。这是代码的样子,

await page.goto('https://marketingplatform.google.com/about/partners/find-a-partner');
await page.waitFor('div.landscape h3.title'); // <-- add this line