带有 puppeteer returns 空数组的查询选择器
Query selector with puppeteer returns empty array
我编写了一个简短的抓取工具,用于使用 Puppeteer 从页面中提取一些标题。虽然我可以抓取单个元素,比如一个单独的 h2,但尝试抓取 return 一组项目并没有成功。
主要是我试图确保我的查询选择器正常工作,我可以在我的 Chrome 开发工具中 运行 Array.from(document.querySelectorAll('div.landscape h3.title')).map(partner => partner.textContent)
并获取我正在寻找的数组,但 运行 在我的脚本中将其 return 设置为一个空数组 []
。如前所述,仅使用一个单独的 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();
})();
似乎没有产生任何错误消息,只是一个空数组的控制台日志。
首次加载页面时,它会显示“正在加载”文本和来自那里的 redirects/loads 数据。
您必须等待元素出现在 DOM 中。代码可能如下所示,
await page.goto('https://marketingplatform.google.com/about/partners/find-a-partner');
await page.waitForSelector('div.landscape h3.title'); // <-- add this line //updated from page.waitFor that is getting deprecated in 2020
我编写了一个简短的抓取工具,用于使用 Puppeteer 从页面中提取一些标题。虽然我可以抓取单个元素,比如一个单独的 h2,但尝试抓取 return 一组项目并没有成功。
主要是我试图确保我的查询选择器正常工作,我可以在我的 Chrome 开发工具中 运行 Array.from(document.querySelectorAll('div.landscape h3.title')).map(partner => partner.textContent)
并获取我正在寻找的数组,但 运行 在我的脚本中将其 return 设置为一个空数组 []
。如前所述,仅使用一个单独的 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();
})();
似乎没有产生任何错误消息,只是一个空数组的控制台日志。
首次加载页面时,它会显示“正在加载”文本和来自那里的 redirects/loads 数据。
您必须等待元素出现在 DOM 中。代码可能如下所示,
await page.goto('https://marketingplatform.google.com/about/partners/find-a-partner');
await page.waitForSelector('div.landscape h3.title'); // <-- add this line //updated from page.waitFor that is getting deprecated in 2020