我写了一个简短的抓取工具,使用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();
})();
似乎没有错误消息产生,只是一个空数组的控制台日志。
答案 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