@pelmeno

Почему не проходит поиск puppeteer ozon?

Делаю парсер для анализа цен на товары в интернет-магазинах, начал с озона и не нажимается кнопка поиска, хотя все классы правильно прописал, всё правильно сделал, не понимаю чего не так, чего пропустил вообще

const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch({headless:false});
    const page = await browser.newPage();
    await page.goto('https://www.ozon.ru/', {waitUntil: 'load'});
    
    await page.screenshot({path: 'test1.png'});

    await page.waitForSelector('.f9j5');
    await page.evaluate(() => {
        const email = document.querySelector('.f9j5');
        console.log(email);
        email.value = 'Санки';
      });
      
      await page.click('button.f9k');

    await page.screenshot({path: 'test2.png'});
    await page.waitForSelector('.ui-b3.ui-c.ui-b5.ui-f3');
    const text = await page.evaluate(() => {
          const anchor = document.querySelector('.ui-b3.ui-c.ui-b5.ui-f3');
          return anchor.textContent;
    });
    console.log(text);
    await page.screenshot({path: 'test3.png'});
    await browser.close();
})();


Т.е название в поле поиска вводится но кнопка по какой-то причине не нажимается

update:
Кнопка всё-таки нажимается но поиск не проходит
Т.е текст в инпуте поиска есть и кнопка нажимается но поиск не идёт
Как понял в озоне, пока пытаюсь понять в чём конкретно

upd2:
Как понял, надо просто было имитировать ввод текста, а не просто его вставлять
Вот такой код работает:

const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch({headless:false});
    const page = await browser.newPage();
    await page.goto('https://www.ozon.ru/', {waitUntil: 'load'});
    
    await page.screenshot({path: 'test1.png'});

    await page.waitForSelector('.f9j5');
    await page.click('.f9j5');
    await page.waitForTimeout(2000);
    await page.keyboard.type("Санки", {delay: 100});
    await page.click('button.f9k');

    await page.screenshot({path: 'test2.png'});
    await page.waitForSelector('.ui-b3.ui-c.ui-b5.ui-f3');
    const text = await page.evaluate(() => {
          const anchor = document.querySelector('.ui-b3.ui-c.ui-b5.ui-f3');
          return anchor.textContent;
    });
    console.log(text);
    await page.screenshot({path: 'test3.png'});
    await browser.close();
})();
  • Вопрос задан
  • 308 просмотров
Решения вопроса 1
@pelmeno Автор вопроса
const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch({headless:false});
    const page = await browser.newPage();
    await page.goto('https://www.ozon.ru/', {waitUntil: 'load'});
    
    await page.screenshot({path: 'test1.png'});

    await page.waitForSelector('.f9j5');
    await page.click('.f9j5');
    await page.waitForTimeout(2000);
    await page.keyboard.type("Санки", {delay: 100});
    await page.click('button.f9k');

    await page.screenshot({path: 'test2.png'});
    await page.waitForSelector('.ui-b3.ui-c.ui-b5.ui-f3');
    const text = await page.evaluate(() => {
          const anchor = document.querySelector('.ui-b3.ui-c.ui-b5.ui-f3');
          return anchor.textContent;
    });
    console.log(text);
    await page.screenshot({path: 'test3.png'});
    await browser.close();
})();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы