Парсер пише товари в прайс джерела по одному, щойно розібрав сторінку, і сам вирішує, яку сторінку відкривати: уже зібраний товар удруге не качається, а обірваний прогін доробляється з місця зупинки.
Коли це знадобиться:
- Потрібні свіжі ціни й наявність із сайту — з увімкненим «Видаляти товари перед завантаженням» кожен прогін відкриває сторінки заново.
- Треба добрати тільки новинки — зі знятим прапорцем сторінки вже зібраних товарів не відкриваються.
- Прогін обірвався або його зупинили — зібране лишається в прайсі, «Продовжити» доробляє решту.
- Тест показує товар, а в прайсі його немає — причин рівно чотири, і всі видно в налаштуваннях джерела.
З чого почати: вирішіть, чи потрібне «Видаляти товари перед завантаженням» на вкладці «Додатково».
Що вміє прогін парсера
- Відрізняє новий товар від зібраного за адресою сторінки й не качає той самий товар двічі.
- Переживає обрив і зупинку — зібране лишається в прайсі, операції прайсу застосовуються до зібраного.
- Продовжує з місця зупинки — «Продовжити» доробляє незавершені завдання, нічого не видаляючи.
- Тримає межі — пачки, потоки й час очікування сторінки задані числами.
- Відсіює товари під час запису — за правилами відбору, діапазоном ціни й наявністю.
- Чек-лист першого прогону — що перевірити, перш ніж дані підуть у каталог.
Де це і хто має доступ
- Меню
- Довідники → Обробка прайс-листів → Список прайс-листів
- Прапорці прогону
- рядок джерела → «Налаштування» → вкладка «Додатково»
- Запуск
- вікно «Завантаження даних із сайту»: «Почати завантаження», «Продовжити», «Скасувати»
- Журнал парсингу
- вкладка «Додатково» → «Журнал парсингу» або картка джерела → «Товари» → бургер
- Право доступу
- вікно «Прайс-листи» (у меню — «Список прайс-листів»)
Як завести джерело-парсер, запустити його вручну чи за розкладом — у статті Парсинг сайтів. Які поля збирає прогін — у статті Що саме забирає парсер із картки товару.
Як оновити ціни або добрати тільки новинки
Парсер відрізняє новий товар від уже завантаженого, і від цього залежить, які сторінки відкриються в прогоні.
Ознака одна — адреса сторінки. Ні назва, ні артикул, ні штрихкод у цьому не беруть участі.
Кожне завдання черги отримує ключ — контрольну суму адреси в нижньому регістрі. Перед тим як завести нове завдання, програма перевіряє, чи немає в черзі рядка з таким самим ключем; є — завдання не створюється. Тому той самий товар не качається двічі, навіть якщо лежить у трьох розділах сайту.
На цьому ж механізмі тримається прапорець «Видаляти товари перед завантаженням» (вкладка «Додатково», група «Обробка даних», за замовчуванням увімкнений):
- увімкнений — перед стартом товари джерела видаляються, і обхід збирає все заново;
- знятий — адреси всіх наявних товарів прайсу заносяться в чергу з позначкою «ігнорувати», і будь-яке завдання на таку адресу відкидається. Їхні сторінки в цей прогін просто не відкриваються. Ось так і працює обіцянка «завантажуватимуться тільки нові товари».
У знятого прапорця є наслідок, про який згадують не одразу: ціни й наявність наявних товарів не оновляться. Їхні сторінки не відкривали, отже нових даних немає. Режим годиться, щоб добирати новинки, і не годиться, щоб стежити за цінами.
Другий наслідок: якщо сайт змінив адресу товару, для парсера це новий товар. Старий залишиться в прайсі поруч із новим.
Що лишається в прайсі, якщо обхід обірвався або його зупинили
Товари пишуться в прайс по одному: розібрали сторінку — у прайсі з'явився рядок разом із характеристиками, фото, відео й файлами. Запису «все разом наприкінці» немає, тому обрив лишає в прайсі рівно ті товари, чиї сторінки встигли розібрати.
Операції прайс-листа — націнка, правила наявності та інші — до зібраних рядків не застосовуються, поки обхід не закінчився. Вони запускаються в трьох випадках:
- у черзі не лишилося невиконаних завдань — прогін дійшов до кінця;
- ви натиснули «Скасувати» у вікні завантаження — операції застосуються до того, що вже зібрано, у журналі з'явиться «Застосування різних операцій для товарів»;
- ви натиснули «Зупинити парсинг даних» у вікні «Журнал парсингу» — незавершені завдання прайсу прибираються з черги, решта ваших незавершених завдань позначаються скасованими, а операції застосовуються до зібраного.
Вікно «Журнал парсингу» відкривається кнопкою «Журнал парсингу» на вкладці «Додатково» вікна «Налаштування завантаження даних із сайту» або з картки джерела: вкладка «Товари» → бургер додаткових операцій → «Журнал парсингу». «Зупинити парсинг даних» — це кнопка-іконка в його шапці, підпис з'являється, коли навести на неї курсор.
1
Зупинити парсинг даних2
Сітка завдань журналу- Іконка «Зупинити парсинг даних» у шапці вікна — зупиняє збір і знімає завдання з черги.
- Сітка завдань журналу: тип операції, посилання, статус, HTTP-код і час відповіді.
Якщо ж обхід обірвався сам — збій на сервері або закрите вікно, коли сторінки відкриває ваш браузер, — операції не запускаються. У прайсі лежать рядки з цінами сайту без націнки, доки обхід не продовжать і не доведуть до кінця.
- Початок або кінець
- Дія або результат
- Розвилка: далі шлях залежить від відповіді
«Скасувати» у вікні завантаження, крім застосування операцій, видаляє з черги незавершені завдання прайсу — і коли сторінки відкриває браузер, і коли ввімкнено «Використовувати сервер для завантаження даних».
У серверному режимі «Скасувати» діє так само, як «Зупинити парсинг даних»: сервер припиняє обхід і наступної пачки вже не візьме, решта ваших незавершених завдань позначаються «Скасовано», у журналі з'являється «Операція перервана користувачем!», а операції прайсу застосовуються до зібраного. Продовжити скасований прогін кнопкою «Продовжити» не вийде — лишається тільки «Почати завантаження».
Як доробити обірваний прогін: «Продовжити» чи «Почати завантаження»
Що відбувається з окремими сторінками:
- сторінка, від якої немає відповіді, повертається в чергу на повтор: коли сторінки відкриває браузер — через 35 секунд, через сервер Elbuz — через 150 секунд: запас на найдовше очікування сторінки сервером, до 120 секунд у режимі «Преміум-парсинг (обхід захистів)». Після п'яти невдалих спроб (для hotline — двадцяти) завдання закривається з позначкою «немає відповіді понад 35 сек, спроба 5 / 5» — в обох режимах позначка однакова, і товару з цієї сторінки в прайсі не буде;
- сторінка, що відповіла кодом 404, закривається без повторів;
- завдання, до яких обхід ще не дійшов, лишаються в черзі. Наступного разу у вікні завантаження над кнопками буде «Є незавершені завдання» з їхньою кількістю й кнопка «Продовжити».
Після обриву дві кнопки діють по-різному:
- «Продовжити» бере в роботу ті самі незавершені завдання. Нічого не видаляється, зібране лишається в прайсі.
- «Почати завантаження» починає обхід заново: чергу завдань і журнал попереднього прогону очищає, а далі все вирішує прапорець «Видаляти товари перед завантаженням». Якщо він увімкнений, зібрані товари прайсу видаляються й збираються повторно. Якщо знятий, адреси вже зібраних товарів ідуть у чергу з позначкою «ігнорувати»: удруге їх не зберуть, доберуться тільки ті, до яких обірваний прогін не дійшов.
- Початок або кінець
- Дія або результат
- Розвилка: далі шлях залежить від відповіді
Товар може задвоїтися в одному випадку, який варто знати. Спершу товар записується в прайс, і лише наступним кроком його завдання позначається виконаним. Якщо обрив припав саме між цими двома кроками, після «Продовжити» сторінку відкриють ще раз, і в прайсі з'явиться другий рядок із тією самою адресою.
Він лишається до завершення прогону: під час завершення рядки з однаковою адресою прибираються, лишається перший.
Скільки сторінок парсер бере за раз і де межі
Скільки триватиме обхід, заздалегідь не порахувати: це залежить від сайту. Але межі, в яких він працює, задані в програмі числами.
Через сервер Elbuz (увімкнено «Використовувати сервер для завантаження даних»):
- сторінки завантажуються пачками: за замовчуванням по 100 адрес у 10 потоків (у фоновому продовженні планувальником — по 300 адрес). На всю пачку відведено 30 секунд на кожну її адресу;
- на одну сторінку чекають до 35 секунд, через ваші власні проксі — до 55 секунд, у режимі «Преміум-парсинг (обхід захистів)» — до 120 секунд;
- з увімкненим «Використовувати сервер для рендерингу JavaScript» (без власних проксі) пачка менша: 4 адреси у 2 потоки;
- обхід іде на сервері, вікно лише показує журнал. Закриття вікна обхід не зупиняє. За один запуск сервер проходить до 14 пачок поспіль, а решту незавершених завдань продовжує фонове завдання планувальника;
- хід видно в журналі: на кожну пачку — рядок «Завантажуємо дані за посиланнями» з кількістю адрес у пачці та кількістю незавершених завдань. Перед кожною пачкою журнал називає режим: «Режим завантаження сторінок:» і далі «серверний проксі», «прямий (без проксі)», «проксі користувача» або «посилений режим (обхід захистів)».
Через браузер (сервер не використовується): обхід веде саме вікно завантаження. Кожні 3 секунди воно бере з черги одну адресу й передає її розширенню Elbuz у браузері. Закрили вікно — нові сторінки не беруться, а невиконані завдання чекають на «Продовжити».
Обмеження на кількість товарів в одному прогоні немає. Окреме число діє тільки для режиму «Пошук за товарами БК»: для пошуку на сайті береться не більше 100 000 активних товарів каталогу.
Чому товар із тесту не потрапив у прайс
Буває так: тест правила показує повний набір полів, а в прайсі товару немає. Причин рівно чотири, і всі вони спрацьовують уже після розбору сторінки, у момент запису.
- У режимі лістингу немає назви або адреси. Такий рядок мовчки пропускається (поля лістингу).
- Спрацювало правило завантаження товарів. Якщо для джерела заведені умови відбору позицій, кожен знайдений товар проганяється через них, і той, що не підійшов, не зберігається.
- Ціна поза діапазоном. Поля «Завантажувати товари з ціною — починаючи від / до» в картці джерела, секція «Ціни». Товар із ціною поза межами не записується.
- Наявність у стоп-списку. У довіднику «Статуси наявності» в кожного статусу є перемикач «Не імпортувати товари з цим статусом (парсер сайту)». Увімкнули його для «Немає на складі» — і товари з таким текстом у полі «Статус наявності (з прайсу)» в прайс не потраплять. Окреме правило
{EMPTY}(або{ПУСТО}— приймаються обидва написання) відсікає товари з порожньою наявністю. За замовчуванням цей перемикач знятий у всіх статусів.
Що перевірити після першого прогону
Пункти ведуть до того, що найчастіше йде не так: розбір кожного — у статті Що саме забирає парсер із картки товару.
Перший прогін завершився
Сценарії
Стежити за цінами й наявністю на сайті постачальника
Що зробити. У групі «Картка товару» заповніть селектори «Ціна» і «Статус наявності (з прайсу)». На вкладці «Додатково» лишіть увімкненим «Видаляти товари перед завантаженням».
Що вийде. Кожне «Почати завантаження» видаляє товари джерела й відкриває сторінки заново, тож ціна й наявність у прайсі — з цього прогону. Коли в черзі не лишиться завдань, до зібраного застосуються операції прайсу: націнка, правила наявності та інші.
Чого не буде. Картки каталогу від цього не зміняться: нові ціни туди переносить оновлення базового каталогу. Якщо обхід обірвався сам, операції не запустяться, і в прайсі лишаться ціни сайту без націнки (що робити після обриву).
Добирати з сайту тільки новинки
Що зробити. Зніміть «Видаляти товари перед завантаженням» і запустіть «Почати завантаження».
Що вийде. Адреси товарів, які вже є в прайсі, стають у черзі позначками «ігнорувати», і завдання на ці адреси не створюються. Відкриваються тільки сторінки з новими адресами.
Чого не буде. Ціни й наявність уже зібраних товарів не оновляться: їхніх сторінок у цей прогін не відкривали. Товар, якому сайт змінив адресу, прийде новим рядком, а старий лишиться поруч.
Що робити, коли після прогону в прайсі не те
| Що ви бачите | Чому так | Що зробити |
|---|---|---|
| Прогін завершився, а ціни в наявних товарів колишні | Знятий прапорець «Видаляти товари перед завантаженням»: сторінки наявних товарів у цей прогін не відкривалися | Увімкнути прапорець, якщо потрібні свіжі ціни (про новий і старий товар) |
| У прайсі два однакових товари | Сайт змінив адресу товару. Для парсера це новий товар: він відрізняє позиції тільки за адресою | Видалити стару позицію або запустити прогін з увімкненим «Видаляти товари перед завантаженням» (про новий і старий товар) |
| У прайсі ціни сайту без націнки, наявність не розпізнана | Обхід обірвався сам, і операції прайсу не запускалися: вони виконуються тільки наприкінці прогону | Натиснути «Продовжити» й довести прогін до кінця (що лишається після обриву) |
Часті запитання
Чи оновляться ціни, якщо зняти «Видаляти товари перед завантаженням»?
Ні. Адреси наявних товарів заносяться в чергу з позначкою «ігнорувати», і їхні сторінки в цей прогін не відкриваються. Приїдуть тільки товари з нових адрес (докладніше).
Чи можна закрити вікно, поки йде обхід?
Через сервер Elbuz — так: обхід іде на сервері, вікно лише показує журнал. Коли сторінки відкриває браузер, закрите вікно нових сторінок не бере, а невиконані завдання чекають на «Продовжити».
Скільки товарів можна зібрати за один прогін?
Обмеження на кількість товарів немає. Окреме число діє тільки для режиму «Пошук за товарами БК»: для пошуку на сайті береться не більше 100 000 активних товарів каталогу.
Чи можна продовжити прогін, скасований кнопкою «Скасувати»?
Ні. «Скасувати» видаляє з черги незавершені завдання прайсу, тож «Продовжити» робити нічого. Лишається «Почати завантаження» (докладніше).
Чому в прайсі два рядки з однаковою адресою товару?
Обрив припав між записом товару й позначкою його завдання виконаним, і після «Продовжити» сторінку відкрили ще раз. Другий рядок прибирається під час завершення прогону, лишається перший (докладніше).
Суміжні теми
- Якщо потрібна загальна картина: які поля, фото й характеристики забирає парсер — Що саме забирає парсер із картки товару.
- Якщо прогін завершився і зібрані характеристики треба звести з довідником атрибутів — Характеристики з сайту в каталозі.
- Якщо прогін має йти сам, за розкладом — Парсинг сайтів.
- Якщо ціни в прайсі свіжі, а в картках каталогу старі — Оновлення базового каталогу.

