𝗙𝗿𝗼𝗺 𝗥𝗲𝗴𝗲𝘅 𝘁𝗼 𝗟𝗟𝗠𝘀: 𝗠𝘆 𝗝𝗼𝘂𝗿𝗻𝗲𝘆 𝗘𝘅𝘁𝗿𝗮𝗰𝘁𝗶𝗻𝗴 𝗨𝗻𝘀𝘁𝗿𝘂𝗰𝘁𝘂𝗿𝗲𝗱 𝗪𝗲𝗯 𝗗𝗮𝘁𝗮

Я намагався створити інструмент для порівняння цін. Йому потрібні були дані про товари з десятків сайтів електронної комерції.

Кожен сайт мав різну HTML-структуру. Деякі використовували випадкові CSS-класи. Інші використовували JavaScript для завантаження контенту.

Мій перший план базувався на Regex та BeautifulSoup. Він працював для двох сайтів. Потім усе зламалося. Один сайт змінив макет. Інший почав використовувати динамічний контент. Я витрачав більше часу на виправлення скрейперів, ніж на використання даних.

Потім я спробував використати LLM. Я надсилав сирий HTML штучному інтелекту та просив дані. Це теж не спрацювало. Результати були непослідовними. ШІ галюцинував значеннями. Мої витрати на API зросли, оскільки HTML споживає занадто багато токенів.

Я знайшов золоту середину. Тепер я використовую гібридний підхід.

Ось мій процес:

  • Попередня обробка HTML. Я видаляю скрипти, стилі та панелі навігації. Я залишаю лише видимий текст. Це дозволяє тримати кількість токенів низькою.
  • Використання JSON mode. Я використовую function calling, щоб змусити LLM повертати структуровані дані.
  • Додавання логіки повторних спроб. Я роблю до трьох спроб, якщо JSON не вдається сформувати.
  • Кешування результатів. Я зберігаю успішні витягування за URL, щоб уникнути повторних витрат.

Regex та BeautifulSoup все ще найкращі для статичних, добре структурованих сторінок. Вони швидкі та безкоштовні.

LLM найкраще підходять для хаотичних або мінливих сайтів. Вони не є магією. Ви повинні спочатку очистити вхідні дані, щоб заощадити гроші.

Мій поточний робочий процес:

• Використовувати легкий парсер для простих сайтів. • Використовувати LLM для непередбачуваних сайтів. • Моніторити вартість за одне витягування. • Валідувати результат, щоб переконатися, що ціни виглядають реалістичними.

Ця зміна допомогла мені додавати нові магазини за одну годину замість одного дня.

Яка ваша стратегія для хаотичних веб-даних? Ви використовуєте LLM чи дотримуєтеся традиційних скрейперів?

Джерело: https://dev.to/__c1b9e06dc90a7e0a676b/from-regex-to-llms-my-journey-extracting-unstructured-web-data-5gmh