Я не совсем уверен, почему это происходит, но я пытаюсь почистить результаты из результатов поиска Google, и результаты динамически загружаются при прокрутке вниз. Я пытаюсь смоделировать это с помощью прокрутки вниз, однако, когда кукловод работает в режиме без головы, он не загружает все результаты поиска, тогда как при отключении без головы он возвращает правильное количество результатов.
I обнаружил, что информация, которую я ищу, хранится в div с классом 'bkWMgd', как вы можете видеть, есть всего 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();
Тем не менее, это все еще приводит к другим результатам, поэтому мне было просто интересно, есть ли способ гарантировать, что и безголовый и напыщенный дают одинаковые результаты. Интересующие меня результаты - это те результаты, которые получаются при отключении безголового