Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как сделать так что бы парсер на nodeJS скролил страницу и нажимал на кнопку "Показать еще"?

Глеб Казаков Знаток (384), открыт 5 дней назад
Впервые пробую сделать парсер на node js, столкнулся с кнопкой "Показать еще".
пробовал использовать Puppeteer, но не выходит что то.
Необходимо, чтобы парсер проскролил до кнопки "Показать еще" и нажал на нее и передал новый html для обработки. В консоли при нажатии на кнопку отправляется запрос ajax.php с ссылкой, которая никуда не ведет.

Может кто знает подскажет? (сайт thelastdb.games )
1 ответ
SlomiX Мудрец (10810) 5 дней назад
Вот пример кода, который может помочь вам решить эту задачу:

Установите Puppeteer, если вы еще этого не сделали:
 npm install puppeteer 
Создайте скрипт для парсинга страницы:
 const puppeteer = require('puppeteer'); 

(async () => {
// Запуск браузера
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();

// Переход на нужную страницу
await page.goto('https://thelastdb.games');

// Функция для проверки наличия кнопки "Показать еще" и нажатия на нее
const clickShowMore = async () => {
const showMoreButton = await page.$('button:contains("Показать еще")');
if (showMoreButton) {
await showMoreButton.click();
await page.waitForSelector('button:contains("Показать еще")', { timeout: 5000 }).catch(() => null);
return true;
}
return false;
};

// Основной цикл для скроллинга и нажатия на кнопку
let hasMore = true;
while (hasMore) {
// Скролл страницы вниз
await page.evaluate(() => {
window.scrollBy(0, window.innerHeight);
});

// Ожидание загрузки новых элементов
await page.waitForTimeout(1000);

// Попытка нажать на кнопку "Показать еще"
hasMore = await clickShowMore();
}

// Получение HTML после всех загрузок
const content = await page.content();
console.log(content);

// Закрытие браузера
await browser.close();
})();
Похожие вопросы