↑↓ вибірEnter відкритиEsc закрити

    1. Elbuz
    2. Керівництво користувача Elbuz
    3. Збір даних із сайтів
    4. Що збирає парсер і куди це йде

    Як парсер оновлює прайс: новинки, повторний прогін і обрив

    20 хв читанняОновлено

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

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

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

      З чого почати: вирішіть, чи потрібне «Видаляти товари перед завантаженням» на вкладці «Додатково».

      Що вміє прогін парсера

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

      Меню
      Довідники → Обробка прайс-листів → Список прайс-листів
      Прапорці прогону
      рядок джерела → «Налаштування» → вкладка «Додатково»
      Запуск
      вікно «Завантаження даних із сайту»: «Почати завантаження», «Продовжити», «Скасувати»
      Журнал парсингу
      вкладка «Додатково» → «Журнал парсингу» або картка джерела → «Товари» → бургер
      Право доступу
      вікно «Прайс-листи» (у меню — «Список прайс-листів»)

      Як завести джерело-парсер, запустити його вручну чи за розкладом — у статті Парсинг сайтів. Які поля збирає прогін — у статті Що саме забирає парсер із картки товару.

      Як оновити ціни або добрати тільки новинки

      відрізняє новий товар від уже завантаженого, і від цього залежить, які сторінки відкриються в прогоні.

      Ознака одна — адреса сторінки. Ні назва, ні артикул, ні штрихкод у цьому не беруть участі.

      Кожне завдання черги отримує ключ — контрольну суму адреси в нижньому регістрі. Перед тим як завести нове завдання, програма перевіряє, чи немає в черзі рядка з таким самим ключем; є — завдання не створюється. Тому той самий товар не качається двічі, навіть якщо лежить у трьох розділах сайту.

      На цьому ж механізмі тримається прапорець «Видаляти товари перед завантаженням» (вкладка «Додатково», група «Обробка даних», за замовчуванням увімкнений):

      • увімкнений — перед стартом товари джерела видаляються, і обхід збирає все заново;
      • знятий — адреси всіх наявних товарів прайсу заносяться в чергу з позначкою «ігнорувати», і будь-яке завдання на таку адресу відкидається. Їхні сторінки в цей прогін просто не відкриваються. Ось так і працює обіцянка «завантажуватимуться тільки нові товари».

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

      Другий наслідок: якщо сайт змінив адресу товару, для парсера це новий товар. Старий залишиться в прайсі поруч із новим.

      Що лишається в прайсі, якщо обхід обірвався або його зупинили

      Товари пишуться в прайс по одному: розібрали сторінку — у прайсі з'явився рядок разом із характеристиками, фото, відео й файлами. Запису «все разом наприкінці» немає, тому обрив лишає в прайсі рівно ті товари, чиї сторінки встигли розібрати.

      Операції прайс-листа — націнка, правила наявності та інші — до зібраних рядків не застосовуються, поки обхід не закінчився. Вони запускаються в трьох випадках:

      • у черзі не лишилося невиконаних завдань — прогін дійшов до кінця;
      • ви натиснули «Скасувати» у вікні завантаження — операції застосуються до того, що вже зібрано, у журналі з'явиться «Застосування різних операцій для товарів»;
      • ви натиснули «Зупинити парсинг даних» у вікні «Журнал парсингу» — незавершені завдання прайсу прибираються з черги, решта ваших незавершених завдань позначаються скасованими, а операції застосовуються до зібраного.

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

      Вікно «Журнал парсингу» з іконкою «Зупинити парсинг даних» у шапці
      1Зупинити парсинг даних
      2Сітка завдань журналу
      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 активних товарів каталогу.

      Чому товар із тесту не потрапив у прайс

      Буває так: тест правила показує повний набір полів, а в прайсі товару немає. Причин рівно чотири, і всі вони спрацьовують уже після розбору сторінки, у момент запису.

      1. У режимі лістингу немає назви або адреси. Такий рядок мовчки пропускається (поля лістингу).
      2. Спрацювало правило завантаження товарів. Якщо для джерела заведені умови відбору позицій, кожен знайдений товар проганяється через них, і той, що не підійшов, не зберігається.
      3. Ціна поза діапазоном. Поля «Завантажувати товари з ціною — починаючи від / до» в картці джерела, секція «Ціни». Товар із ціною поза межами не записується.
      4. Наявність у стоп-списку. У довіднику «Статуси наявності» в кожного статусу є перемикач «Не імпортувати товари з цим статусом (парсер сайту)». Увімкнули його для «Немає на складі» — і товари з таким текстом у полі «Статус наявності (з прайсу)» в прайс не потраплять. Окреме правило {EMPTY} (або {ПУСТО} — приймаються обидва написання) відсікає товари з порожньою наявністю. За замовчуванням цей перемикач знятий у всіх статусів.

      Що перевірити після першого прогону

      Пункти ведуть до того, що найчастіше йде не так: розбір кожного — у статті Що саме забирає парсер із картки товару.

      Перший прогін завершився

      Сценарії

      Стежити за цінами й наявністю на сайті постачальника

      Що зробити. У групі «Картка товару» заповніть селектори «Ціна» і «Статус наявності (з прайсу)». На вкладці «Додатково» лишіть увімкненим «Видаляти товари перед завантаженням».

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

      Чого не буде. Картки каталогу від цього не зміняться: нові ціни туди переносить оновлення базового каталогу. Якщо обхід обірвався сам, операції не запустяться, і в прайсі лишаться ціни сайту без націнки (що робити після обриву).

      Добирати з сайту тільки новинки

      Що зробити. Зніміть «Видаляти товари перед завантаженням» і запустіть «Почати завантаження».

      Що вийде. Адреси товарів, які вже є в прайсі, стають у черзі позначками «ігнорувати», і завдання на ці адреси не створюються. Відкриваються тільки сторінки з новими адресами.

      Чого не буде. Ціни й наявність уже зібраних товарів не оновляться: їхніх сторінок у цей прогін не відкривали. Товар, якому сайт змінив адресу, прийде новим рядком, а старий лишиться поруч.

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

      Що видно в прайсі після прогону й що з цим робити
      Що ви бачитеЧому такЩо зробити
      Прогін завершився, а ціни в наявних товарів колишні Знятий прапорець «Видаляти товари перед завантаженням»: сторінки наявних товарів у цей прогін не відкривалися Увімкнути прапорець, якщо потрібні свіжі ціни (про новий і старий товар)
      У прайсі два однакових товари Сайт змінив адресу товару. Для парсера це новий товар: він відрізняє позиції тільки за адресою Видалити стару позицію або запустити прогін з увімкненим «Видаляти товари перед завантаженням» (про новий і старий товар)
      У прайсі ціни сайту без націнки, наявність не розпізнана Обхід обірвався сам, і операції прайсу не запускалися: вони виконуються тільки наприкінці прогону Натиснути «Продовжити» й довести прогін до кінця (що лишається після обриву)

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

      Чи оновляться ціни, якщо зняти «Видаляти товари перед завантаженням»?

      Ні. Адреси наявних товарів заносяться в чергу з позначкою «ігнорувати», і їхні сторінки в цей прогін не відкриваються. Приїдуть тільки товари з нових адрес (докладніше).

      Чи можна закрити вікно, поки йде обхід?

      Через сервер Elbuz — так: обхід іде на сервері, вікно лише показує журнал. Коли сторінки відкриває браузер, закрите вікно нових сторінок не бере, а невиконані завдання чекають на «Продовжити».

      Скільки товарів можна зібрати за один прогін?

      Обмеження на кількість товарів немає. Окреме число діє тільки для режиму «Пошук за товарами БК»: для пошуку на сайті береться не більше 100 000 активних товарів каталогу.

      Чи можна продовжити прогін, скасований кнопкою «Скасувати»?

      Ні. «Скасувати» видаляє з черги незавершені завдання прайсу, тож «Продовжити» робити нічого. Лишається «Почати завантаження» (докладніше).

      Чому в прайсі два рядки з однаковою адресою товару?

      Обрив припав між записом товару й позначкою його завдання виконаним, і після «Продовжити» сторінку відкрили ще раз. Другий рядок прибирається під час завершення прогону, лишається перший (докладніше).

      Суміжні теми

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

      Зміст статті

      Спробувати безкоштовно