Как максимально уменьшить/очистить HTML страницы товара электронной коммерции

Вопрос или проблема

Как максимально сократить/убрать HTML с страницы продукта электронной коммерции и при этом сохранить информацию о продукте:
Название, Цена, Цена со скидкой, Размеры (если есть), Размер для выбора, Добавить в корзину и Путь к оформлению заказа для навигации.
В общем, мне нужно собрать информацию о продукте. Я должен добавить продукт в корзину (поэтому мне нужно выбрать размер, если он есть), а затем перейти к оформлению заказа. Это должно работать для любого сайта электронной коммерции. Я использую NodeJs и Puppeteer.

В настоящее время я удаляю ненужный HTML, такой как скрипты, мета-теги и т. д., и запрашиваю у GPT 4o вышеуказанную информацию о продукте. Проблема в том, что для некоторых сайтов длина HTML все еще превышает 50000, и GPT не дает корректный ответ.
Есть ли идеи, как еще больше сократить HTML и/или другой способ найти вышеуказанную информацию? Одна из идей заключается в том, чтобы сделать скриншот страницы, отправить его в openAI и получить координаты информации о продукте, затем получить HTML в этих координатах, но я не знаю, возможно ли это.

Ответ или решение

Уменьшение и очистка HTML на странице продукта электронной коммерции с использованием Node.js и Puppeteer

В современном цифровом мире, где скорость и эффективность имеют критическое значение, задача по снижению размеров HTML-кода страницы продукта электронной коммерции становится особенно актуальной. Цель состоит в том, чтобы извлечь важную информацию, такую как название продукта, цена, цена со скидкой, размеры и пути к осуществлению покупки, при этом значительно уменьшив общий объем HTML-кода. В этом ответе рассмотрим несколько стратегий по достижению этой цели.

1. Удаление лишних HTML-элементов

Первым шагом в уменьшении размера HTML-кода является удаление лишних элементов, таких как:

  • Скрипты и стили: Удалите <script> и <link> теги, а также любые встроенные стили или стили в отдельном файле. Это может значительно сократить объем сбора данных, поскольку не вся информация из этих элементов необходима для получения информации о продукте.

  • Метатеги: Как правило, метатеги, такие как <meta> и <title>, не предоставляют полезной информации для ваших целей, поэтому их можно удалить.

  • Навигационные элементы: Лишние элементы интерфейса, такие как меню, заголовки и подзаголовки, могут быть удалены без ущерба для извлекаемой информации.

2. Использование селекторов для выборки нужной информации

Когда речь идет о том, как эффективно собирать только необходимую информацию, важно использовать CSS-селекторы и XPath для точной выборки данных. Puppeteer позволяет легко извлекать текст и атрибуты только из тех элементов, которые вы хотите:

const productName = await page.$eval('.product-name', el => el.innerText);
const productPrice = await page.$eval('.product-price', el => el.innerText);
const discountPrice = await page.$eval('.discount-price', el => el.innerText);
const sizes = await page.$$eval('.size-option', els => els.map(el => el.innerText));
const addToCartButton = await page.$eval('.add-to-cart', el => el.getAttribute('href'));
const checkoutPath = await page.$eval('.checkout-link', el => el.getAttribute('href'));

Это позволяет вам собирать только ту информацию, которая действительно важна, и минимизирует размер HTML-кода, который вы анализируете.

3. Применение регулярных выражений

Вы также можете использовать регулярные выражения для поиска и удаления ненужного контента из HTML. Они позволяют вам более гибко обрабатывать текст, избавляясь от лишней информации, чтобы оставить только актуальные данные о продукте.

const cleanHtml = originalHtml.replace(/<script.*?>.*?<\/script>/g, '')
                            .replace(/<style.*?>.*?<\/style>/g, '')
                            .replace(/<meta.*?>/g, '')
                            .replace(/<nav.*?>.*?<\/nav>/g, '');

4. Оптимизация загрузки страницы

Для уменьшения длины загружаемого HTML-кода также рекомендуется оптимизировать саму страницу перед ее парсингом:

  • Lazy loading: Убедитесь, что ненужные изображения и элементы загружаются только при необходимости, что может сократить объем изначально загружаемого HTML.

  • Согласование отклика серверов: Если возможно, убедитесь, что сервер предоставляет только те данные, которые необходимы, возможно, через API, который возвращает структурализированные данные в формате JSON.

5. Альтернативные методы сбора данных

Вместо сбора HTML-кода можно рассмотреть использование API, если такая возможность доступна. Многие платформы электронной коммерции имеют RESTful API, которые предоставляют структурированные данные о продуктах. Это может существенно упростить задачу и устранить необходимость в очистке HTML.

Заключение

Сокращение HTML-кода на странице продукта электронной коммерции требует комплексного подхода, включая удаление лишнего контента, использование CSS-селекторов, применение регулярных выражений и, по возможности, переход на API. Эти меры не только помогут вам упростить процесс извлечения данных, но и существенно оптимизируют характеристики вашего приложения, основанного на Node.js и Puppeteer.

Оцените материал
Добавить комментарий

Капча загружается...