【发布时间】:2020-05-07 22:49:38
【问题描述】:
我不确定为什么会发生这种情况,但是我正在尝试从 Google 搜索结果中抓取结果,并且在您向下滚动时会动态加载结果。我试图通过向下滚动来模拟这一点,但是当 puppeteer 在无头模式下运行时,它不会加载所有搜索结果,而当无头关闭时,它会返回正确数量的结果。
我发现我要查找的信息存储在具有“bkWMgd”类的 div 中,您可以看到总共有 7 个 div:
傀儡代码:
(async (searchQuery) => {
const browser = await puppeteer.launch({
//headless: false
});
const page = await browser.newPage();
await page.goto('https://google.com/search?q='+searchQuery, { waitUntil: 'networkidle2' });
//Wait for one of the div classes to load
await page.waitForSelector('div[class=bkWMgd]');
//Scroll all the way down
await page.evaluate(() => window.scrollTo(0,document.body.scrollHeight));
//Counts how many div with class 'bkWMgd' there are
const resp = await page.evaluate(() => document.querySelectorAll('div[class=bkWMgd]').length);
console.log(resp);
await page.screenshot({path: 'example.png'});
await browser.close();
})('cats')
在无头模式下运行此代码 console.logs 3 并在关闭无头模式的情况下运行它会输出正确的数字7
这些是捕获的屏幕截图:
由于某种原因,似乎正在输出不同的结果。我尝试创建一个 IngocnitoContext:
const context = await browser.createIncognitoBrowserContext();
const page = await context.newPage();
但是,它仍然会导致不同的结果,因此我只是想知道是否有一种方法可以确保 headless 和 headful 产生相同的结果。我感兴趣的结果是关闭无头时产生的结果
【问题讨论】:
标签: javascript html node.js dom puppeteer