Скрін-скрейпінг і парсинг даних: інструменти, приклади на Python та автоматизація

На картці товару в інтернет-магазині завжди видно назву, ціну та статус наявності. Але щоб регулярно відстежувати динаміку цін і порівнювати асортимент конкурентів, ці дані потрібно автоматично збирати в зручну таблицю або базу даних.
У цьому посібнику ми розберемо скрейпинг на прикладі опенсорсного інструмента Yozh Scraper від команди CyberYozh App. Спочатку витягнемо дані з однієї тестової сторінки, а потім налаштуємо регулярний автоматичний збір по всьому каталогу.
Ви дізнаєтесь, як обрати відповідний спосіб вилучення даних, відсіяти помилки в отриманих значеннях і зберегти чистий результат. Після базового налаштування ми розберемо готовий скрипт на Python, налаштуємо автоматичний запуск за розкладом і покажемо, які проксі підключити для роботи з регіональною видачею.
Розбираємося в термінах: скрін-скрейпинг, веб-скрейпинг і парсинг
У російськомовному середовищі будь-який автоматичний збір інформації з сайтів часто називають одним словом — «парсинг». Але в технічній документації ці поняття розділяють. Скрін-скрейпинг (screen scraping, або скрейпинг екрана) — це вилучення даних, які вже відобразилися у візуальному інтерфейсі: у вікні браузера, всередині старої десктопної програми без функції експорту або на скриншоті (через оптичне розпізнавання символів OCR). Веб-скрейпинг відповідає за завантаження веб-сторінок, а парсинг — за розбір отриманого коду за селекторами та очищення тексту.
Що таке скрін-скрейпинг і збір даних з інтерфейсу
Скрін-скрейпинг автоматично зчитує інформацію, виведену на екран для людини, і перетворює її на структуровані дані для інших програм. Скрейпер забирає текст з елементів інтерфейсу та зберігає його у вигляді рядків таблиці або полів JSON-файлу.
Механіка роботи залежить від того, звідки саме ви забираєте дані:
Веб-сторінки: реальний або фоновий (headless) браузер повністю завантажує сторінку з усіма скриптами, після чого скрейпер забирає назву товару, ціну та залишки з готової верстки (DOM-дерева).
Старі десктопні програми (Legacy-системи): скрипти автоматизації зчитують складські залишки або картки клієнтів просто з вікон старого офісного софту, в якому немає API чи вивантаження в Excel.
Зображення та скан-копії: модуль оптичного розпізнавання (OCR) знаходить текст на скриншотах і перетворює пікселі на звичайні друковані символи.
Як працює скрейпинг веб-сторінок на практиці
Візьмемо типову картку товару на маркетплейсі. Браузер завантажує сторінку, правила вибору знаходять потрібні блоки, а перевірка (валідація) відсіює порожні рядки. Увесь процес складається з п'яти кроків:
Відкрийте сторінку. Перейдіть за цільовим URL з потрібним регіональним IP і налаштованою сесією.
Дочекайтеся підвантаження динамічних блоків. Переконайтеся, що скрипти сайту встигли вивести на екран ціну та статус наявності до того, як скрейпер почне читання.
Витягніть потрібні поля. Зчитайте назву товару, ціну, валюту та статус залишків за заданими CSS-селекторами або XPath.
Перевірте отримані значення. Відфільтруйте порожні поля, невірну регіональну валюту або текст помилки, що випадково потрапив замість назви товару.
Збережіть чистий запис. Запишіть результат у базу разом із вихідним посиланням і точним часом збору (timestamp), щоб дані можна було порівнювати в динаміці.
Під час роботи зі складними майданчиками ваш скрейпер для Amazon або іншого маркетплейсу може зберігати зібрані поля разом зі скриншотом відкритої сторінки. Це дуже економить час під час налагодження. Якщо в базу раптом записалася порожня ціна, ви просто відкриваєте збережений знімок екрана й одразу бачите причину: змінилася верстка, з'явилося вікно вибору регіону або не прогрузився скрипт.
Парсинг HTML, браузерний скрейпинг і API: що обрати
Завжди починайте з найпростішого способу, що найменше вимагає ресурсів. Спочатку перевірте, чи є в майданчика офіційний API або вбудоване вивантаження прайс-листа в CSV, Excel чи XML-фід. Якщо готового експорту на сайті немає, відкрийте вихідний код сторінки: чи приходять ціни одразу в статичному HTML від сервера, чи підвантажуються через JavaScript лише всередині браузера.
Метод збору | З чим працює | Коли застосовувати | Що потрібно контролювати |
API або експорт прайсу | Структуровані відповіді JSON/XML або файли CSV/XLSX | Майданчик офіційно віддає всі потрібні поля | Ліміти запитів (квоти), ключі доступу та зміни структури API |
Прямий парсинг HTML-коду | Вихідна HTML-відповідь сервера | Ціни й тексти є в коді одразу, без виконання JS | Оновлення селекторів під час зміни верстки сайту |
Браузерний скрейпинг | Відрендерені елементи сторінки (DOM) | Контент підвантажується через JS, фільтри або дії на сторінці | Тайминги очікування елементів, селектори та збереження авторизації |
OCR і десктопна автоматизація | Пікселі на зображеннях, вікна програм, термінали | Дані зашиті в картинку або інтерфейс старої програми без експорту | Масштаб вікон, координати кнопок і точність розпізнавання символів |
Як видно з таблиці, скрін-скрейпинг і веб-скрейпинг тісно перетинаються. Коли ви відкриваєте сайт через автоматизований браузер і забираєте дані з відрендерених елементів сторінки, це класичний браузерний веб-скрейпинг. Запускати для цього розпізнавання тексту за пікселями (OCR) не потрібно, поки сам текст доступний усередині HTML-розмітки.
Yozh Scraper створений саме для браузерного скрейпингу: він відкриває сайти зі складним JavaScript, зберігає авторизацію (файли cookie та localStorage) між запитами й дає змогу налаштувати готові шаблони (пресети) селекторів для повторного запуску.
Інструменти для скрейпингу: вибір під джерело даних
Вибір інструментів для скрейпингу залежить від того, звідки саме ви забираєте дані. Для роботи з веб-сторінками та розпізнавання тексту зі скриншотів вистачить безкоштовних опенсорсних рішень, а для старих офісних програм на Windows знадобляться системи автоматизації робочих столів (RPA).
Yozh Scraper: готовий сервіс для браузерного скрейпингу
Yozh Scraper — це безкоштовний self-hosted сервіс із власним REST API, побудований на базі Playwright. Він відкриває сторінки в реальному браузерному рушії та повертає витягнуті за CSS/XPath поля, чистий Markdown для нейромереж, вихідний HTML-код і повні скриншоти сторінок. А система готових пресетів і фонової черги завдань (batch-запитів) дає змогу один раз налаштувати правила збору й запускати їх через API.
Сам скрейпер і модуль краулера запускаються однією командою в Docker, а для ручного налаштування та перевірки запитів у репозиторії є зручний веб-інтерфейс (Scraper Tester) на Node.js. Проєкт повністю безкоштовний (ліцензія MIT): ви можете розгорнути його на своєму комп'ютері й протестувати локально без жодних витрат. Витрати з'являються лише під час виходу на робочі обсяги, коли знадобляться серверний хостинг, проксі та API-ключі нейромереж (якщо ви захочете генерувати селектори через ШІ).
Playwright: пряме керування браузером з коду на Python
Обирайте пакет Playwright напряму, якщо хочете самі написати скрипт на Python для нестандартних сценаріїв: кліків по кнопках, прокручування нескінченної стрічки чи вибору фільтрів. У цьому разі Playwright відповідає за запуск браузера та дії на сторінці, але весь код для парсингу селекторів, перевірки порожніх полів і збереження файлів вам доведеться написати вручну.
Tesseract: розпізнавання тексту із зображень і скриншотів
Tesseract — безкоштовний інструмент оптичного розпізнавання (OCR), який зчитує текст із зображень і перетворює його на звичайні текстові рядки. Його підключають тоді, коли потрібні дані не можна забрати з HTML-коду сторінки: наприклад, якщо інформація є лише на скриншоті, скан-копії документа або зашита прямо в зображення.
UiPath: автоматизація десктопних програм і старих систем
Платформа UiPath стане в пригоді, коли дані потрібно забрати не із сайту в браузері, а зі звичайної програми на комп'ютері. Наприклад, зі старої складської чи бухгалтерської системи на Windows, де взагалі немає функції вивантаження звітів. Платформа вміє автоматично перемикати вікна таких програм, зчитувати текст з елементів інтерфейсу та розпізнавати таблиці прямо з екрана.
Практика: як налаштувати збір даних через Yozh Scraper
Потренуємося на спеціальному демо-сайті Books to Scrape — це тестова вітрина книжкового магазину, створена для навчання парсингу. Вона має просту статичну верстку, тому тут зручно розібратися із селекторами та візуальним тестером перед переходом до складних маркетплейсів.
1. Визначте структуру підсумкового запису
Нам потрібно отримати картку товару з п'ятьма полями: назва книги, ціна, статус наявності, посилання на сторінку та точний час збору. Перші три значення заберемо зі сторінки за селекторами, а вихідний URL і штамп часу у форматі UTC додамо під час збереження результату.
2. Запустіть сервер Yozh Scraper
Переконайтеся, що у вас встановлені Git і Docker, і виконайте чотири команди з інструкції зі швидкого старту Yozh Scraper:
git clone https://github.com/CyberYozh-data/yozh-scraper
cd yozh-scraper
cp .env.example .env
docker compose up --buildЗалиште контейнери запущеними. Після збирання сервіс скрейпера запуститься на порту 8000 (інтерактивна документація OpenAPI доступна за адресою http://localhost:8000/docs), а супутній модуль краулера — на порту 8001.
3. Запустіть візуальний тестер (Scraper Tester)
Веб-інтерфейс для ручного налагодження запускається в окремому вікні термінала (на комп'ютері має бути встановлений Node.js версії 18+). Перейдіть у папку scraper-tester всередині репозиторію та запустіть сервер:
cd scraper-tester
npm install
node server.jsВідкрийте в браузері адресу http://localhost:7000 і натисніть кнопку Check поруч із полем Scraper URL у шапці сторінки — індикатор має стати зеленим.
4. Налаштуйте правила вилучення (селектори)
Перейдіть на вкладку Scrape Page, вставте тестовий URL книги, виберіть пряме з'єднання без проксі (none) і додайте три правила для CSS-вилучення:
Поле | CSS-селектор |
Назва (title) | .product_main h1 |
Ціна (price) | .product_main .price_color |
Наявність (availability) | .product_main .availability |
Для кожного поля залиште вилучення тексту (attr: text) і позначте галочкою обов'язковість поля (required). У полі очікування елемента (wait_for_selector) уведіть .product_main .price_color. Увімкніть створення скриншота (screenshot) і не блокуйте завантаження медіафайлів (block_assets).
5. Протестуйте збір на одній сторінці
Запустіть завдання та звірте отримані дані зі скриншотом сторінки. Для тестової книги скрейпер поверне назву A Light in the Attic, ціну £51.77 і статус In stock (22 available). Сервіс акуратно прибирає зайві переноси рядків і зберігає значок валюти. Оскільки це демо-сайт, усі ціни та залишки тут навчальні.
6. Збережіть шаблон (пресет) для повторних запусків
Відкрийте вкладку Presets. У правій частині екрана (Preset Builder) вставте посилання на сторінку й натисніть Fetch sample, щоб завантажити зразок HTML. На наступному кроці виберіть ручний метод (Manual) і внесіть перевірені селектори в таблицю. Натисніть Verify для сухого прогону, а потім збережіть пресет під зрозумілою назвою (система автоматично додасть до неї префікс user_). Тепер цей шаблон можна вибрати у випадному списку на вкладці Scrape Page і протестувати на інших книгах каталогу.
Коли ви перейдете від демо-сайту до реальних маркетплейсів із регіональною видачею, пропишіть свій API-ключ CyberYozh App (CYBERYOZH_API_KEY) у файлі .env і виберіть потрібний тип проксі. Наприклад, ротаційні резидентські проксі (res_rotating) підтримують точний геотаргетинг за кодом країни, штатом і містом, а сам скрейпер автоматично підлаштує локаль і часовий пояс браузера під обрану країну. Перед запуском збору на тисячі сторінок обов'язково зробіть поодинокий тестовий запит і переконайтеся, що сайт відкриває вітрину потрібного регіону.
Скрейпинг на Python: витягуємо й зберігаємо дані сторінки
Якщо ви пишете власний збирач на Python із використанням Playwright, ви самі керуєте переходами по сторінках, обробкою помилок і форматом збереження файлів. У прикладі нижче скрипт відкриває ту саму картку книги на сайті Books to Scrape, забирає дані за нашими селекторами, перевіряє їх і зберігає у файл product.json.
Встановіть бібліотеку та браузерний рушій командами python -m pip install playwright і python -m playwright install chromium. Потім збережіть код у файл scrape_product.py і запустіть його через python scrape_product.py.
Якщо потрібно пустити трафік скрипта через проксі CyberYozh App, заздалегідь задайте три змінні середовища в терміналі:
CYBERYOZH_PROXY_SERVER: адреса вашого HTTP-проксі у форматіhttp://HOST:PORT.CYBERYOZH_PROXY_USERNAME: логін від проксі.CYBERYOZH_PROXY_PASSWORD: пароль від проксі.
Якщо змінну з адресою сервера не задано, скрипт просто відкриє сторінку напряму без проксі. У самому Playwright проксі можна прив'язати як до всього процесу браузера, так і до окремого ізольованого контексту.
import json
import os
from datetime import datetime, timezone
from playwright.sync_api import sync_playwright, TimeoutError
URL = "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"
FIELDS = {
"title": ".product_main h1",
"price": ".product_main .price_color",
"availability": ".product_main .availability",
}
options = {}
if server := os.getenv("CYBERYOZH_PROXY_SERVER"):
options["proxy"] = {
"server": server,
"username": os.getenv("CYBERYOZH_PROXY_USERNAME", ""),
"password": os.getenv("CYBERYOZH_PROXY_PASSWORD", ""),
}
with sync_playwright() as p:
browser = p.chromium.launch(**options)
try:
page = browser.new_page()
response = page.goto(URL, wait_until="domcontentloaded")
if response is None or not response.ok:
raise SystemExit("Page request failed; check the URL and connection.")
record = {}
for field, selector in FIELDS.items():
element = page.locator(selector)
try:
element.wait_for(state="visible", timeout=10000)
value = " ".join(element.inner_text().split())
except TimeoutError:
raise SystemExit(f"Required field missing or not ready: {field}")
if not value:
raise SystemExit(f"Required field is empty: {field}")
record[field] = value
record.update(
source_url=page.url,
collected_at=datetime.now(timezone.utc).isoformat(),
)
with open("product.json", "w", encoding="utf-8") as output:
json.dump(record, output, ensure_ascii=False, indent=2)
print("Saved product.json")
finally:
browser.close()Скрипт чекає появи кожного обов'язкового елемента на екрані (до 10 секунд), склеює зайві пробіли та зберігає ціну разом зі значком валюти. Якщо бодай одне поле не завантажилося або виявилося порожнім, програма одразу зупиниться зі зрозумілим текстом помилки й не перезаписуватиме файл битими даними. Під час успішного збору в JSON-файл додаються вихідний URL і час у форматі UTC.
Порада: про те, як правильно очищати й структурувати сирі дані після збору, читайте в нашому докладному гайді з парсингу даних.
А якщо у вас уже розгорнуто Yozh Scraper і збережено готовий пресет, вам не потрібно писати логіку Playwright з нуля. Скрипт на Python може просто звертатися до Yozh Scraper через REST API у три кроки:
Надішліть POST-запит на ендпоінт
/api/v1/scrape/preset/pageі збережіть отриманий ідентифікатор завданняjob_id.Періодично запитуйте статус через
GET /api/v1/scrape/{job_id}до завершення завдання (не забудьте задати загальний тайм-аут і перевірку статусівfailedтаcancelled).Заберіть готові дані через
GET /api/v1/scrape/{job_id}/results, перевірте поля в об'єктіdataі збережіть їх у свою базу.
Автоматизація збору даних: краулер, розклад в n8n та ШІ-агенти
Коли ви налагодили збір даних з однієї картки товару, наступний крок — масштабувати процес на весь каталог і налаштувати регулярне оновлення цін. Будуйте автоматизацію навколо вже перевіреного пресета: задайте точні правила пошуку посилань, налаштуйте запуск за таймером і перевіряйте відповіді перед записом у базу.
Збір посилань по каталогу через Yozh Crawler
Супутній сервіс Yozh Crawler (працює на порту 8001) автоматично проходить по розділах сайту, знаходить нові посилання та передає сторінки в Yozh Scraper для вилучення даних. Вкажіть стартову сторінку категорії (seed_url) і задайте правила сканування: залишатися лише всередині поточного домену (same-domain) або переходити тільки за посиланнями з потрібним шаблоном в адресі (наприклад, лише за сторінками товарів). Там само вкажіть ліміт на максимальну кількість сторінок (max_pages) і глибину переходів за посиланнями (max_depth).
В інтернет-магазинах на одну й ту саму картку товару часто ведуть десятки схожих посилань: із www і без нього, зі слешем наприкінці або з хвостами параметрів сортування в адресі. Вбудоване очищення URL (канонікалізація) зводить такі посилання до єдиного вигляду й не дає краулеру завантажувати одну й ту саму сторінку по кілька разів. А обмеження кількості запитів за секунду (RPS) береже цільовий сайт від перевантаження. Завжди починайте з невеликого ліміту в 10–20 сторінок і перевіряйте список знайдених URL: так ви одразу помітите й відітнете зайві розділи на кшталт блогу чи сторінки контактів.
Запуск за розкладом в n8n
Платформа автоматизації n8n легко підключається до REST API вашого Yozh Scraper. Типовий робочий сценарій (воркфлоу) будується з п'яти блоків:
Запуск за таймером → відправлення завдання в скрейпер → очікування готовності → перевірка полів → запис у базу або таблицю.
Задайте потрібний інтервал у вузлі Schedule Trigger, а відправлення завдання налаштуйте через стандартний вузол HTTP Request. Збережіть отриманий job_id і перевіряйте статус завдання в циклі з невеликою паузою. Обов'язково додайте обмеження кількості спроб і окрему гілку для сповіщень про помилки, щоб завдання, які впали, не залишалися непоміченими.
Перед фінальним записом у таблицю чи базу даних перевіряйте наявність усіх обов'язкових полів і прикріплюйте мітку часу. У такому зв'язку n8n відповідає за розклад і маршрутизацію даних, а всю роботу з браузером виконує Yozh Scraper.
Порада: інші інструменти та схеми для регулярного запуску парсерів ми розібрали в окремому посібнику з автоматизації веб-скрейпингу.
Керування через ШІ-асистентів за протоколом MCP
Протокол Model Context Protocol (MCP) дає змогу підключати зовнішні інструменти напряму до ШІ-асистентів, таких як Claude. Достатньо прописати адресу MCP-сервера (http://localhost:8000/mcp) у налаштуваннях клієнта, і нейромережа сама отримає доступ до функцій скрейпера. Після цього ви можете просто написати в чаті: «Збери дані з цієї сторінки й виведи ціни в таблиці» — асистент сам запустить завдання, дочекається завершення рендерингу та надішле готову відповідь.
Крім того, у самому Yozh Scraper можна підключити нейромережу для автоматичного складання пресетів. Замість ручного пошуку класів у коді сторінки ви просто описуєте завдання словами (режим from_prompt) або передаєте список потрібних полів із типами даних (режим from_schema), і ШІ сам добирає CSS-селектори. Там само вмикається функція автовиправлення (self_heal): якщо магазин оновить дизайн і обов'язкове поле повернеться порожнім, скрейпер сам знайде новий селектор у зміненій верстці та оновить ваш користувацький пресет. Звісно, після такого авторемонту результат краще звірити зі скриншотом сторінки, щоб переконатися, що нейромережа обрала правильний блок.
Щоб увімкнути генерацію та автовиправлення селекторів, вкажіть у файлі .env свій API-ключ від OpenAI, Anthropic, Gemini або OpenRouter (запити до моделей оплачуються окремо за тарифами обраного ШІ-провайдера).
Як обрати проксі та налаштувати сесії для скрейпингу
Під час скрейпингу сайтів через браузер вибір проксі залежить від трьох речей: потрібної вам геолокації, тривалості однієї сесії та частоти запитів до сайту. В інфраструктурі CyberYozh App під кожен сценарій є своя лінійка проксі:
Мобільні проксі LTE/4G/5G (від $1.70 на добу): працюють через реальних операторів стільникового зв'язку й чудово підходять для збору даних із пошукової видачі Google та майданчиків зі строгими фільтрами трафіку. Оскільки на одному мобільному IP одночасно сидять сотні звичайних абонентів стільникової мережі, системам захисту набагато складніше позначити таку адресу як підозрілу, і запити рідше потрапляють під обмеження. Водночас рендеринг сторінок у реальному браузері споживає багато трафіку через підвантаження скриптів і стилів, тому безлімітний тариф серйозно заощаджує бюджет: ви можете парсити цілодобово без доплат за кожен гігабайт. А якщо потрібно пришвидшити збір, можна взяти кілька мобільних каналів і розподілити запити за паралельними потоками.
Орендуйте мобільні проксі з чистими IP-адресами та безлімітним трафіком.
Ротаційні резидентські проксі (від $4 за ГБ): оптимальні для масштабного парсингу товарних каталогів і перевірки цін у різних країнах і містах. Для збору поодиноких сторінок вмикайте зміну IP на кожен запит, а для багатокрокових сценаріїв (наприклад, вибору міста доставки та переходу в кошик) використовуйте sticky-сесії до 24 годин. Невитрачений трафік автоматично переноситься на наступний місяць.
Підключайтеся до пулу з 100+ млн реальних резидентських IP у 195+ країнах.
Статичні резидентські ISP-проксі (від $5.29 на місяць): поєднують безлімітний трафік і фіксовану домашню IP-адресу. Обирайте їх для регулярного моніторингу одних і тих самих кабінетів або майданчиків, де потрібна постійна авторизація з незмінної адреси.
Беріть статичні ISP-проксі і працюйте з одного закріпленого IP увесь термін оренди.
Серверні (датацентрові) проксі: швидкий і бюджетний варіант із безлімітним трафіком для парсингу відкритих каталогів і простих сайтів, які спокійно ставляться до серверних підмереж.
Обирайте швидкі виділені IPv4/IPv6 серверні проксі з аптаймом 99.99%.
Якщо ви збираєте дані із сайтів, де потрібен вхід в акаунт або прив'язка до міста доставки, важливо враховувати, що за збереження сесії відповідають два незалежні механізми. Перший — це куки (cookies) і localStorage браузера, у яких сайт зберігає токен вашої авторизації та вибрані налаштування регіону (в Yozh Scraper для цього є ендпоінт /api/v1/sessions, що дає змогу один раз пройти логін і передавати збережені куки в наступні запити). Другий механізм — це постійність IP-адреси проксі. Вони працюють у парі, але не замінюють один одного: постійний IP сам по собі не втримає авторизацію, якщо на сайті минув термін дії токена в куках. І навпаки: навіть зі збереженими куками захисна система сайту може скинути сесію, якщо під час роботи у вас раптово змінилася IP-адреса.
Перед запуском масштабного збору перевірте вихідний IP і його геолокацію через чекер IP-адрес від CyberYozh App (це можна робити й автоматично через API). Чекер покаже, чи не значиться адреса в спам-базах і чи правильно визначається країна. Але після перевірки в чекері обов'язково зробіть один пробний запит до самого цільового сайту, адже в кожного маркетплейсу свої внутрішні правила фільтрації.
Часті помилки під час скрейпингу та способи їх розв'язання
Якщо після запуску у звіті з'явилися порожні поля або некоректні дані (наприклад, ціни в чужій валюті чи текст капчі замість назви товару), відкрийте збережений скриншот із цього ж завдання та порівняйте його з підсумковим JSON-файлом. Так ви за секунду зрозумієте, у чому річ: сторінка взагалі не завантажилася через заглушку чи просто збився CSS-селектор.
Симптом | Що перевірити і як виправити |
Повертаються порожні поля | Налаштуйте явне очікування потрібного селектора ( |
У базу потрапляють невірні ціни | Перевірте вибрану на сайті валюту, місто доставки та комплектацію товару в картці. Під час перетворення рядка на число враховуйте формат роздільників (крапку чи кому). |
Замість товару відкривається чужа сторінка | Перевірте за скриншотом, чи не перекинуло браузер на сторінку входу, банер згоди з cookie або регіональний редирект. Виставте правильну мову браузера та гео проксі. |
У звіті дублюються одні й ті самі товари | Очищайте посилання від зайвих UTM-міток і параметрів сортування перед скануванням, а унікальність перевіряйте за артикулом товару (SKU/ASIN) з урахуванням регіону та часу збору. |
Сервер постійно відповідає помилкою 429 | Зменште кількість одночасних потоків, збільште паузи між запитами, враховуйте заголовок |
Збір зламався після редизайну сайту | Оновіть CSS-селектори в пресеті вручну через візуальний тестер або скористайтеся автовиправленням через ШІ ( |
Після будь-яких правок у пресеті Yozh Scraper спочатку протестуйте його на 1–2 картках товарів і лише потім запускайте регулярний збір по всьому каталогу. Докладний розбір роботи з лімітами запитів і кодами відповіді сервера читайте в нашій статті про помилку 429 Too Many Requests.
Правові аспекти: чи законний скрейпинг даних
Сама по собі технологія автоматичного збору даних абсолютно легальна, але законність конкретного проєкту завжди залежить від п'яти чинників: джерела, способу доступу до сторінок, категорії даних, що збираються, країни (юрисдикції) та того, як саме ви використовуєте отриману інформацію. Той факт, що сторінка відкрита у публічному доступі в інтернеті, ще не дає автоматичного права копіювати й перепродавати її вміст без обмежень.
Перед запуском парсера в комерційному проєкті вивчіть користувацьку угоду (Terms of Service) цільового майданчика, директиви файлу robots.txt і правила використання контенту. Окремо враховуйте авторське право та суміжні права на бази даних, особливо якщо ви плануєте публікувати зібрані тексти й фотографії у себе на сайті або продавати готову базу третім особам.
Особливу увагу приділяйте законам про захист персональних даних (таким як GDPR та їхнім локальним аналогам). Регулятори прямо вказують: навіть якщо особисті дані користувачів опубліковані у відкритих профілях, під час їх автоматичного збору та зберігання ви зобов'язані дотримуватися правил обробки персональної інформації.
Під час навчання за цим гайдом тренуйтеся на демо-сайті та збирайте лише базові характеристики карток товарів (назву, ціну й наявність). А в реальних бізнес-завданнях заздалегідь визначайте список потрібних розділів, не зберігайте зайву інформацію, обмежуйте доступ до зібраної бази всередині команди та вчасно видаляйте старі копії HTML і скриншоти, якщо на них могли потрапити персональні дані користувачів.
