Що робити, коли парсер сайту зібрав не те або нічого

9 хв

Elbuz записує кожну сторінку обходу в «Журнал парсингу» з кодом відповіді й розміром, тож видно, чи сайт не віддав сторінку, чи селектори її більше не розбирають.

Коли це знадобиться:

  • Прогін пройшов, а товарів немає або назви порожні — колонка «Тип операції» показує, на якому кроці обірвався ланцюжок.
  • Сайт показує перевірку «ви не робот» — збір стає на паузу й чекає, поки ви пройдете перевірку у своєму браузері.
  • Сайт відповідає 403 чи 429 — після третьої невдалої спроби сторінка закривається, а сторінка відмови в прайс не потрапляє.
  • Сайт перемалювали — тест правила, майстер селекторів і підбір AI повертають робочі правила.

З чого почати: відкрийте «Журнал парсингу» до наступного запуску.

Що допоможе знайти причину

Де це і хто має доступ

Меню
Довідники → Обробка прайс-листів → Список прайс-листів
Журнал парсингу
вікно налаштувань парсера → вкладка «Додатково» → «Журнал парсингу»
Інші входи
іконка журналу у вікні збору; «Додаткові операції» вікна товарів прайсу
Право доступу
вікно «Журнал парсингу» або «Журнал парсингу сайтів»
Підготувати
«Режим налагодження» на вкладці «Додатково» — щоб журнал зберігав код сторінок

Який журнал відповідає на ваше питання

Найчастіша плутанина в цій підсистемі — не селектори, а журнали. Їх три, і вони відповідають на різні питання.

Жива стрічка у вікні «Завантаження даних із сайту» відповідає на питання «що відбувається просто зараз». Рядки приходять по ходу роботи: «Починаємо завантаження», «Завантажуємо дані за посиланнями - N (M)», де N — скільки сторінок пішло в роботу в цій порції, а M — скільки завдань лишилося, «Виявлено капчу», «Операція перервана користувачем!», «Застосування різних операцій для товарів», «Завдання завершено». Архівом стрічка не є: рядки приходять у реальному часі й ніде не переграються, тож заново відкрите вікно порожнє, а записи минулого прогону стираються, щойно ви запустите наступний.

«Журнал парсингу»: рядок на кожну сторінку

Це вікно відповідає на питання «що сталося з кожною сторінкою». По суті це черга завдань: один рядок — одна сторінка, яку треба було відкрити й розібрати. Відкривається кнопкою «Журнал парсингу» вгорі вкладки «Додатково» або іконкою журналу у вікні збору, і одразу відфільтроване по вашому джерелу.

Відкрили журнал між прогонами й побачили «Немає даних для відображення» — це норма, а не збій налаштування. Черга живе рівно стільки, скільки йде обхід: на старті кожного прогону програма чистить і її, і докладні рядки загального журналу за цим джерелом. Тому в журнал заглядають під час роботи або одразу після неї; коли потрібна історія за минулі дні, її дивляться на вкладці «Журнал» у картці джерела.

Колонки, у порядку корисності при розборі: «Тип операції» (посилання на категорії, посилання на товари, картка товару, атрибути товару), «Посилання», «HTTP код відповіді», «Розмір, кб», «Повторів», «Статус» — накопичувальний рядок, куди програма дописує причини, «Дата додавання», «Виконано», «У роботі», «Час відповіді», «Дата виконання», «Контрагент/Прайс», «Користувач», «ID завдання». Іконка сторінки в рядку відкриває «HTML код сторінки» — але тільки якщо в налаштуваннях був увімкнений «Режим налагодження»; інакше розмітка не зберігається.

Колонка «Тип операції» — найкорисніша й найменш очевидна: вона показує, до якого кроку конвеєра дійшов обхід. Якщо в журналі є рядки «Посилання на категорії» і «Посилання на товари», але жодного «Картка товару (контент)», ланцюжок обірвався на другому кроці — селектор блоку товару нічого не знайшов. Якщо є картки, але немає атрибутів, справа в четвертому кроці.

У тулбарі є «Оновити» і «Зупинити парсинг даних» — друга кнопка зупиняє збір, не відкриваючи вікна запуску.

Журнал прогонів джерела відповідає на питання «скільки рядків у підсумку приїхало». Це та сама вкладка «Журнал» у картці джерела, що й у файлових прайсів, з оцінкою здоровʼя, плитками й історією; у колонці «Формат» для такого джерела стоїть parser.

Сайт змінив вигляд — і зібралося не те

Це найчастіша поломка збору, і виглядає вона мирно: прогін проходить, помилок немає, а товарів немає теж. Або вони є, але з порожніми назвами. Причина майже завжди одна — сайт перемалювали, і селектори більше не знаходять того, що знаходили торік. Розбирається це в чотири прийоми, і порядок має значення.

Крок перший — прочитати «Журнал парсингу» (кнопка вгорі вкладки «Додатково»), бо він відрізняє «сайт не віддав сторінку» від «сторінка приїхала, але не розібралася», а колонка «Тип операції» показує, на якому кроці все зупинилося. Зробіть це до наступного запуску: кнопка «Почати завантаження» стирає і чергу завдань, і живу стрічку минулого прогону, тож дивитися буде вже нічого. «Продовжити» нічого не стирає. Ознаки такі:

  • код відповіді 200, «Розмір, кб» нормальний, а товарів немає — сторінка приїхала цілою, справа в селекторах;
  • код 403, 429 або 5xx і «Статус» із http … — сторінка не відкрилася, пропущено — сайт відмовив, селектори ні до чого, дивіться режим завантаження;
  • код 404 і «Виконано» — сторінки більше немає, приберіть адресу;
  • «Розмір, кб» підозріло маленький — замість сторінки приїхала заглушка антибота або перевірка «ви не робот»;
  • завдань немає взагалі, а в стрічці одразу «Завдання завершено» — обходити нічого: або порожній «Список посилань» разом із порожнім селектором категорій, або «Селектор операції» не знайшов на сторінці жодного посилання.

Крок другий — тест правила на тому кроці, де обірвався ланцюжок. Вписуєте в колонку «Посилання для тестування» адресу сторінки, яка точно існує, і тиснете кнопку тесту в рядку «Селектор операції». Ліва панель «Результат тестування» покаже, що саме повертає селектор зараз. Порожньо — селектор мертвий; є, але не те — селектор ловить сусідній блок.

Крок третій — підібрати селектор заново. Для операцій зі списками це «Майстер налаштування парсера»: він покаже готові селектори для всіх груп посилань на сторінці, вам лишиться скопіювати потрібний у «Селектор операції». Для картки товару й атрибутів — кнопка підбору штучним інтелектом, яка перезаписує правила сама.

Крок четвертий — увімкнути «Авто пошук селекторів», якщо сайт перемальовують регулярно. У цьому режимі програма підбирає селектор сама на кожному прогоні там, де він порожній, і відрізняє сторінку списку від картки за характерними для лістингу словами й позначками ціни.

Коли з сайту приїхало не те

Коли сайт не віддає сторінки

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

Перевірка «ви не робот». На цей випадок передбачена окрема поведінка: збір стає на паузу, сторінка повертається в чергу, лунає звуковий сигнал, а в стрічці червоним зʼявляється «Виявлено капчу» й посилання «Пройдіть перевірку на сайті та натисніть «Продовжити»». Веде воно саме на ту сторінку, де перевірка трапилася, і відкривається у звичайній вкладці браузера, де живуть ваші куки: пройшли перевірку — «Продовжити», і обхід іде далі з того самого місця.

Розпізнає програма перевірку за прикметами — характерними шматками коду сторінки, які записані в налаштуваннях самого парсера. У готових модулів вони заповнені: у Hotline, наприклад, це g-recaptcha, «Automatic checking against unwanted bots» і ще кілька рядків. А в універсального парсера, якого заводить майстер, прикмет немає жодної, і це головне, що треба знати: сторінка з перевіркою приїде до нього як звичайна. У журналі парсингу в неї буде код 200 і підозріло малий розмір, а товарів із неї нуль. Побачили таку картину — відкрийте цю адресу у своєму браузері й подивіться, що на ній насправді.

Відмова сервера. Коди 400 і вище означають, що сторінка не відкрилася. 404 закривається одразу й назавжди — сторінки більше немає. Решта (403, 429, 5xx) повторюється, і після третьої невдалої спроби завдання закривається. Тіло відповіді як результат розбору не зберігається ніколи: сторінка з написом «Access Denied» не потрапить у ваш прайс як опис товару. До ваших рядків у полі «Ігнорувати сторінки, які містять текст» програма додає ще десять службових прикмет — заглушки й перевірки Cloudflare, «403 Forbidden», «Access Denied» і подібні. Робить вона це тільки в серверному режимі: у браузерному сторінку приносить розширення, і цієї підстраховки немає.

Що з цим робити, залежить від сайту. Якщо постачальник дав вам доступ — «Напряму, без проксі»: такі запити не тарифікуються. Якщо сайт просто не любить чужих — «Через проксі» або власні адреси у вікні «Список проксі серверів» (кожна адреса з нового рядка, у форматі user:password@proxyserver:proxyport або proxyserver:proxyport). Якщо не допомагає ні те, ні інше — «Через сервіс обходу захистів»: він обходить капчу й антибот-захист великих майданчиків, але тарифікується окремо за кожен запит. Коли гроші на балансі закінчаться, прогін зупиниться з повідомленням «Преміум-парсинг (обхід захистів) зупинено: недостатньо коштів на балансі. Поповніть баланс, щоб продовжити.»

Сценарії

Нічний прогін пройшов без помилок, а товарів нуль

Відкрийте «Журнал парсингу». Код 200 і підозріло малий «Розмір, кб» означають, що замість сторінки приїхала перевірка «ви не робот» або заглушка захисту: універсальний парсер її не впізнає. Відкрийте адресу у своєму браузері й змініть «Як сервер завантажує цей сайт» (про блокування).

Чого не буде: сторінка-заглушка не потрапить у прайс як товар — товарів із неї просто нуль.

Після оновлення сайту назви приїхали порожні

У журналі код 200 і звичайний розмір — сторінка ціла, селектори застаріли. Прогоніть тест правила на кроці, де обірвався ланцюжок, і підберіть селектор заново: майстром для списків, AI — для картки й атрибутів (порядок перевірок).

Чого не буде: підбір AI не зберігає старих значень — скопіюйте робочі селектори до запуску.

Сайт почав відповідати 403

Якщо постачальник дав вам доступ — поставте «Напряму, без проксі». Якщо ні — «Через проксі» або власні адреси у «Списку проксі серверів», а коли й це не допомагає, «Через сервіс обходу захистів».

Чого не буде: сторінки з відмовою не повторюються без кінця — після третьої невдалої спроби завдання закривається.

Повідомлення парсера й що з ними робити

Що ви бачитеЧому такЩо зробити
У журналі парсингу код 200, «Розмір, кб» помітно менший за звичайний, товарів із цих сторінок немає Приїхала не сторінка, а заглушка захисту або Відкрити цю ж адресу у своєму браузері. Якщо там перевірка — пройти її або змінити режим завантаження сторінок (про блокування)
Код відповіді 200, розмір сторінки звичайний, а товарів немає Сторінка приїхала цілою, але селектори її більше не розбирають — сайт змінив вигляд Тест правила → майстер селекторів → підбір AI, саме в такому порядку. У серверному режимі перевірте заодно поле «Ігнорувати сторінки, які містять текст» (сайт змінив вигляд)
У журналі парсингу: http 403 — сторінка не відкрилася, пропущено Сайт відмовив. Тіло відповіді як результат не зберігається, після третьої невдалої спроби завдання закривається Змінити «Як сервер завантажує цей сайт» або підключити свої проксі. Якщо постачальник дав доступ — «Напряму, без проксі» (про блокування)
Те саме з кодом 404 Сторінки більше немає; завдання закривається одразу, без повторів Прибрати адресу зі «Списку посилань» або перезавантажити карту сайту
У журналі: op_status = 1 немає відповіді понад 35 сек, спроба 2 / 5 Відповідь не прийшла вчасно. У браузерному режимі (35 секунд) — закрили вікно, згорнули браузер, немає розширення; у серверному (150 секунд) — повільний сайт Не закривати вікно під час збору або ввімкнути «Використовувати сервер для завантаження даних» (про два режими)
У журналі останній рядок сторінки: op_status = 1 немає відповіді понад 35 сек, спроба 5 / 5 — друге число дорівнює першому Спроби після тайм-аутів вичерпано: сторінку закрито без даних і пропущено. Якщо ж вичерпано спроби на порожніх відповідях, рядок інший — op_status = 2 після 5 спроб не вдалося завантажити Відкрити адресу з колонки «Посилання» у браузері. Відкривається — повторити прогін; не відкривається — сайт блокує запити (коли сайт не віддає сторінки)
Після пошуку контенту: «Пошук завершено, але джерел із відмовами: 5» У браузерному прогоні пʼять сайтів-джерел хоча б раз відповіли помилкою або капчею. Під заголовком — розбір: «назва сайту — N відмов · капча M» Натиснути «Відкрити журнал» — відкриється вкладка «Прогрес» із фільтром «Лише помилки». Капча й 403 — сайт блокує; код 200 без знайденого — сайт змінив верстку
У журналі: op_status = 3 отримано порожню відповідь Сторінка прийшла порожньою. Завдання повертається в чергу й повторюється, поки не вичерпані пʼять спроб Перевірити адресу в браузері. Якщо сторінка відкривається, а порожні відповіді повторюються — увімкнути «Використовувати сервер для рендерингу JavaScript»
«fetch-сервіс не повернув HTML, пропущено» Зовнішній сервіс завантаження сторінок повернув порожню відповідь Повторити прогін; якщо повторюється — змінити режим завантаження сторінок
«Преміум-парсинг (обхід захистів) зупинено: недостатньо коштів на балансі. Поповніть баланс, щоб продовжити.» Обрано «Через сервіс обходу захистів», гроші на балансі скінчилися Поповнити баланс або повернути режим «Через проксі»

Часті запитання

Відкрив журнал парсингу, а там «Немає даних для відображення». Це збій?

Ні. Черга живе, поки йде обхід: на старті кожного прогону програма її чистить. Історію за минулі дні дивіться на вкладці «Журнал» у картці джерела (про журнал).

Чи можна вивантажити «Журнал парсингу» в Excel, щоб відправити постачальникові?

Ні, експорту немає. Відкрийте в рядку «HTML код сторінки» — це те, що сайт віддав програмі (лише з «Режимом налагодження»), — або виділіть і скопіюйте рядки з таблиці. Робіть це до наступного запуску того самого джерела.

Де подивитися HTML сторінки, яку забрала програма?

У «Журналі парсингу», іконкою сторінки в рядку — відкриється «HTML код сторінки». Розмітка зберігається, лише коли на вкладці «Додатково» увімкнений «Режим налагодження».

У журналі «немає відповіді понад 35 сек, спроба 2 / 5» — це погано, товар втрачено?

Ні, це повторна спроба після тайм-ауту: завдання повернулося в чергу. Погано лише тоді, коли обидва числа однакові — «спроба 5 / 5»: сторінку закрито без даних (що робити).

Чи потрапить сторінка «Access Denied» у прайс як опис товару?

Ні. Тіло відповіді з кодом 400 і вище як результат розбору не зберігається ніколи.

Суміжні теми

Чи була стаття корисною?