Puppeteer — как удалить из DOM все скрытые (display:none) элементы?

В Node.js для удаления из DOM всех скрытых элементов с атрибутом display: none можно использовать библиотеку Puppeteer. Puppeteer — это Node.js-библиотека для управления хромируемого браузера через протокол DevTools.

Ниже приведен код, который позволит удалить все скрытые элементы из DOM с использованием Puppeteer:

const puppeteer = require('puppeteer');

async function removeHiddenElements() {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  await page.goto('https://example.com');

  await page.evaluate(() => {
    // Получение всех элементов на странице
    const allElements = Array.from(document.querySelectorAll('*'));

    // Фильтрация скрытых элементов с атрибутом display: none
    const hiddenElements = allElements.filter((element) => {
      const styles = getComputedStyle(element);
      return styles.display === 'none';
    });

    // Удаление скрытых элементов
    hiddenElements.forEach((element) => {
      element.remove();
    });
  });

  // Сохранение изменений
  await page.reload();

  await browser.close();
}

removeHiddenElements();

В этом коде мы:

1. Подключаем библиотеку Puppeteer.
2. Создаем асинхронную функцию removeHiddenElements, в которой и выполняем все действия.
3. Запускаем браузер с помощью метода puppeteer.launch().
4. Создаем новую страницу с помощью метода browser.newPage().
5. Переходим на нужный адрес с помощью метода page.goto().
6. Внутри метода page.evaluate() получаем все элементы на странице с помощью document.querySelectorAll('*').
7. Фильтруем скрытые элементы, используя getComputedStyle(element) для получения стилей и проверки, что display === 'none'.
8. Удаляем скрытые элементы, используя метод element.remove().
9. Сохраняем изменения на странице с помощью page.reload().
10. Закрываем браузер с помощью browser.close().

Заметьте, что в этом коде мы предполагаем, что страница, на которой мы выполняем этот код, не будет использовать динамическую загрузку контента. Если контент будет загружаться динамически, вам может потребоваться добавить дополнительный код, чтобы дождаться загрузки всех элементов.

Надеюсь, этот ответ поможет вам удалить все скрытые элементы из DOM с использованием Puppeteer.