Як запустити збір із сайту вручну і за розкладом

23 хв

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

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

  • Сайт треба зібрати зараз — «Імпортувати» відкриває вікно збору, і обхід починається одразу.
  • Ціни треба оновлювати щоночі — у серверному режимі розклад запускає збір без людини.
  • Минулий прогін обірвався — «Продовжити» доходить решту черги, нічого не стираючи.
  • Сайт не віддає сторінки серверу — режим «Напряму, без проксі», власні проксі або сервіс обходу захистів.

З чого почати: кнопка «Імпортувати» в шапці правої панелі «Списку прайс-листів».

Що вміє запуск збору

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

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

Як запустити збір вручну

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

  • «Почати завантаження» — створює завдання й починає обхід;
  • «Продовжити» — зʼявляється, коли з минулого разу лишилися незавершені завдання; поруч стоїть лічильник «Є незавершені завдання N» і підказка «Натисніть кнопку "Продовжити" для продовження роботи.»;
  • «Пауза» — видно лише під час роботи; у стрічку пишеться «Завдання призупинено», черга лишається на місці;
  • «Скасувати» — теж лише під час роботи; у стрічці «Завдання скасовано», після чого прогін завершується;
  • напис «триває робота» — поки він пульсує, збір живий; між рідкими рядками стрічки інакше не відрізнити роботу від зависання;
  • іконка журналу парсингу.

Що саме ви побачите в шапці, залежить від того, чи лишилися незавершені завдання з минулого разу. Якщо ні — обхід уже йде: у шапці тільки «Пауза», «Скасувати» й «триває робота». Якщо так — обхід не почався, а в шапці стоять «Почати завантаження» і «Продовжити», лічильник «Є незавершені завдання N» і підказка під ними.

Далі все залежить від того, хто відкриває сторінки — ваш браузер чи сервер.

Браузерний режим працює без модуля сервера. Вікно кожні три секунди питає в сервера порцію завдань і передає їх розширенню Elbuz, розширення відкриває сторінки й повертає розмітку. Звідси два наслідки, про які варто знати заздалегідь: без розширення не збереться нічого, а закрите вікно зупиняє збір. Прогін вважається завершеним після пʼяти порожніх відповідей поспіль.

Браузерний режим: кожну сторінку відкриває розширення у вашому браузері, а вікно збору передає її на сервер. Закрите вікно рве цей ланцюжок у першій же стрілці
СайтРозширення ElbuzСервер ElbuzВікно зборурозбір за правилами, нові завдання в черзіloop[кожні 3 секунди, поки вікно відкрите]п'ять порожніх відповідей поспіль — прогін завершенодай порцію завданьадреси сторіноквідкрий ці адресивідкриває сторінку у вкладці браузерарозмітка сторінкирозміткарозмітка на розбір
  • Запит або дія
  • Відповідь
  • loop — повторюється
  • Примітка

Серверний режим вмикається прапорцем «Використовувати сервер для завантаження даних» і працює, тільки якщо у вашому акаунті активований відповідний модуль. Тоді сторінки качає сервер Elbuz — по 100 адрес за раз у 10 потоків, у режимі «Напряму, без проксі» у 20, — а вікно лише показує стрічку. Його можна закрити.

Посилання «Встановити розширення» показується у вікні налаштувань, коли в парсера знятий прапорець «Використовувати сервер для завантаження даних», — тобто рівно тоді, коли розширення й потрібне. Як його встановити — у статті Розширення Elbuz для Chrome.

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

Запустити все одразу можна пунктом бургера «Запустити всі парсери сайтів» у групі «Завантаження джерел» списку прайс-листів. Програма сама збере всі активні джерела-парсери й оброблятиме їх по черзі: закінчився один — вікно закривається й через півтори секунди відкривається для наступного.

Що відбувається після «Почати завантаження»

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

  1. Черга й жива стрічка минулого прогону стираються. Тому «Журнал парсингу» треба читати до наступного запуску, а не після. Кнопка «Продовжити» нічого не стирає.
  2. Якщо стоїть «Видаляти товари перед завантаженням», товари джерела видаляються. Якщо прапорець знятий, адреси наявних товарів заносяться в чергу з позначкою «ігнорувати», і їхні сторінки в цей прогін узагалі не відкриваються — ось так і працює обіцянка «завантажуватимуться тільки нові товари».
  3. Якщо заповнене «Посилання на карту сайту (файл XML)», карта завантажується заново — при кожному прогоні, а не один раз при налаштуванні.
  4. Якщо у вкладці «Список посилань» є адреси, кожна з них стає завданням. Адреса з галочкою «Це посилання на товар» іде одразу в операцію «Картка товару», решта — в операцію «Список посилань на товари».
  5. Якщо «Список посилань» порожній, програма створює рівно одне завдання — «Список посилань на категорії товарів» на адресу з поля «Посилання на категорії», а коли воно порожнє — на головну сторінку сайту.
Верхня развилка — яка з двох кнопок натиснута: «Продовжити» нічого не стирає. Нижня гілка праворуч — той випадок, коли черга не створюється зовсім і прогін закінчується, не почавшись
«Продовжити»«Почати завантаження»такнінітактакніНатиснули кнопку у вікні збору«Продовжити» чи «Початизавантаження»?Обхід іде з наявної черги, нічогоне стираєтьсяЧерга й жива стрічка минулогопрогону стираються«Видаляти товари передзавантаженням»?Товари джерела видаляютьсяАдреси наявних товарів ідуть учергу як «ігнорувати»«Список посилань» порожній?Кожна адреса стає завданням: згалочкою «Це посилання натовар» — «Картка товару», решта— «Список посилань на товари»Заповнений «Селектор операції»категорій або ввімкнено «Автопошук селекторів»?Одне завдання на «Посилання накатегорії» або головну сторінкуЧерги немає: після пʼяти порожніхвідповідей — «Завданнязавершено»
  • Дія або результат
  • Розвилка: далі шлях залежить від відповіді

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

Дві перевірки працюють на кожному завданні, і про них варто знати заздалегідь. Одна адреса потрапляє в чергу один раз: повторне посилання на ту саму сторінку відкидається, тому один і той самий товар не качається двічі, навіть якщо він лежить у трьох розділах. І адреса чужого домену в чергу не потрапляє взагалі — у стрічці зʼявляється червоний рядок Main domain not exist in url! з адресою сайту та відкинутим посиланням. Якщо сайт віддає товари на другому домені, впишіть його в поле «Посилання синонім» на вкладці «Додатково».

Як запускати збір за розкладом

Розклад відкривається кнопкою «Налаштування розкладу» — вона стоїть у верхньому ряду вкладки «Додатково», поряд із «Журналом парсингу» і «Списком проксі серверів».

Верхній ряд кнопок вкладки «Додатково» вікна налаштування парсера
1«Журнал парсингу»
2«Налаштування розкладу»
3«Список проксі серверів»
  1. «Журнал парсингу» — покрокова історія обробки кожної сторінки.
  2. «Налаштування розкладу» — регулярний збір, працює лише в серверному режимі.
  3. «Список проксі серверів» — власні адреси для обходу.

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

Вікно «Налаштування розкладу» парсера сайту
1Перемикач «Активність»
2Вибір часу запуску
  1. Перемикач «Активність» вмикає розклад — без нього завдання за розкладом не запускається.
  2. Поля дня тижня та часу («Кожен тиждень у понеділок-п'ятниця у 17:10») задають, коли саме стартує парсинг.

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

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

Ще одна деталь, спільна для обох режимів: завдання, яке надто довго не отримує відповіді, повертається в чергу з відміткою в журналі й лічильником спроб. У браузерному режимі програма чекає 35 секунд, у серверному — 150. За замовчуванням спроб пʼять, для окремих майданчиків більше. У браузерному режимі це найчастіше означає згорнуте вікно, у серверному — повільний сайт.

Що налаштувати на вкладці «Додатково»

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

Головна картка вкладки — «Параметри парсингу», розбита на пʼять груп.

«Які дані збирати». «Завантажувати атрибути» (увімкнено; підказка попереджає, що при оновленні базового каталогу за них стягується додаткова оплата), «Завантажувати фото» (увімкнено), «Завантажувати відгуки» (вимкнено), «Зберігати meta теги» (вимкнено), «Зберігати текстову копію сторінок сайту» (вимкнено).

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

«Режим завантаження сторінок». Тут селект «Як сервер завантажує цей сайт» із трьома значеннями: «Через проксі (звичайний серверний режим)» — так за замовчуванням; «Напряму, без проксі» — коли постачальник сам дозволив вам збір і такі запити безкоштовні; «Через сервіс обходу захистів» — для сайтів, які інакше сторінок не віддають, оплачується окремо за будь-якого тарифу. Для третього варіанта зʼявляється поле «Країна запиту» зі значенням «Авто (за замовчуванням)», а прапорець серверного режиму вмикається примусово. У цій же групі — «Використовувати сервер для завантаження даних», «Використовувати сервер для рендерингу JavaScript», «Завантажувати JavaScript» і «Завантажувати товари та ціни без відкриття картки».

Картка «Параметри парсингу» на вкладці «Додатково»
1Які дані збирати
2Як сервер завантажує цей сайт
3Використовувати сервер для завантаження даних
4Режим налагодження
5Завантаження цін
  1. Група «Які дані збирати» — визначає, що саме зберігається під час обходу: атрибути, фото, відгуки, meta-теги, текстову копію сторінок.
  2. Селект «Як сервер завантажує цей сайт» — три режими: через звичайний сервер, напряму або з обходом захисту сайту.
  3. Чекбокс «Використовувати сервер для завантаження даних» — без нього сторінки відкриває ваш браузер, і вікно програми має лишатися відкритим.
  4. Чекбокс «Режим налагодження» у групі «Автоматика та налагодження» — без нього код сторінки не зберігається в журналі парсингу.
  5. Група «Завантаження цін» — вмикає збирання цін під час парсингу.

Про два прапорці цієї групи варто сказати окремо. «Використовувати сервер для рендерингу JavaScript» потрібен сайтам, які без виконання скриптів показують порожню сторінку, — і він же різко сповільнює обхід: у цьому режимі сервер бере по 4 адреси за раз у 2 потоки замість звичайних 100 адрес у 10 потоків. А «Завантажувати товари та ціни без відкриття картки» після створення джерела на універсальний парсер уже не впливає: за режим лістингу відповідає колонка «Товари в цій операції» в рядку «Селектор операції» групи «Список посилань на товари», і перемикати треба саме її.

«Обробка даних». «Виправляти неправильний HTML» (увімкнено), «Очищати посилання» — у універсального парсера прибирає з адрес лістингів хвіст після #, а параметри виду ?param=value зрізає тільки в готових модулів, — і «Видаляти товари перед завантаженням» (за замовчуванням стоїть). Останній прапорець варто зрозуміти правильно: якщо його зняти, із сайту завантажуватимуться тільки нові товари, а те, що зникло з сайту, залишиться у вашому прайсі.

«Автоматика та налагодження». «Авто пошук селекторів» — програма сама підбирає селектор там, де він порожній, на кожному прогоні. «Пошук за товарами БК» — обхід не по розділах, а пошуком на сайті за вашими товарами: у поле «Посилання на пошук товару» вписують адресу пошуку з макросом {NAME}, {SKU} або {EAN}, і програма підставить у неї назву, артикул чи штрихкод кожного товару базового каталогу. «Режим налагодження» — зберігає розмітку кожної сторінки в журналі парсингу; без нього дивитися там буде нічого.

«Завантаження цін». Прапорець «Завантажувати ціни».

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

Акордеон «Додатково» внизу цієї ж вкладки ховає те, що потрібне рідко, але без чого окремі сайти не збираються: «Знайти» / «Замінити» (заміна по всій сторінці, до розбору), «Селектори CSS для видалення зайвих блоків», «Список тегів для видалення», видалення посилань свого й сторонніх доменів, списки cookies на видалення й на встановлення, «Заголовки HTTP», «Кодування сайту», а також «Макс. кількість сторінок із категорії» та «Макс. кількість товарів із категорії» — ці дві межі читають готові модулі, а універсальний парсер обмежують колонкою «Макс. кількість результатів» у рядку правила. Там же перемикач «Тип завантажуваних елементів»: «Товар», «Стаття», «Новина», «Рецепт». За замовчуванням — «Товар».

Сценарії

Додавати тільки нові товари, не перекачуючи наявні

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

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

Збирати сайт щоночі без участі людини

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

Чого не буде: без модуля серверного парсингу завдання за розкладом нічого не збере. Якщо в момент старту вже йде інший парсинг за розкладом, цей запуск скасовується з записом «Скасовано завантаження за розкладом, причина - завантажується інший шаблон парсингу (конфлікт обробки даних).»

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

Що ви бачитеЧому такЩо зробити
«Завдання завершено» одразу після старту, у журналі парсингу жодного рядка Черга не створилася: «Список посилань» порожній і при цьому в групі «Список посилань на категорії товарів» немає ні селектора, ні «Авто пошуку селекторів». У браузерному режимі так само виглядає відсутнє Заповнити «Селектор операції» першого кроку або додати адреси у «Список посилань»; перевірити розширення (з чого починається обхід)
У стрічці червоним: Main domain not exist in url! і дві адреси Селектор захопив посилання на інший домен — таке в чергу не потрапляє Уточнити селектор. Якщо сайт справді віддає товари на другому домені — вписати його в «Посилання синонім» (про обхід)
«Джерело ID 123 пропущено розкладом: парсер працює у браузері, за розкладом він не запускається» У парсера знятий прапорець «Використовувати сервер для завантаження даних», а розклад уміє запускати тільки серверний збір Увімкнути серверний режим або запускати це джерело руками (про розклад)
«Джерело ID 123 пропущено розкладом: серверний парсинг для акаунта не підключено» У парсера серверний режим стоїть, але сам модуль в акаунті не активований Підключити модуль «Використовувати сервер для завантаження даних» (де це і хто має доступ)
«Скасовано завантаження за розкладом, причина - завантажується інший шаблон парсингу (конфлікт обробки даних).» Інший прогін за розкладом уже йде; двох одночасних не буває Дочекатися завершення. Якщо повторюється щоразу — рознести розклади джерел по різних годинах (про розклад)
«Операція перервана користувачем!» Натиснуто «Скасувати» — тут або в іншому вікні Нічого. Незавершені завдання лишилися: наступного разу вікно запропонує «Продовжити»
«Є незавершені завдання N» і «Натисніть кнопку "Продовжити" для продовження роботи.» Минулий прогін не дійшов до кінця «Продовжити» — обхід піде з того самого місця. «Почати завантаження» почне все заново й зітре журнал минулого прогону (про запуск)
Налаштування у вкладці «Додатково» «не збереглися» Кнопки «Зберегти» у вікні немає: форма йде на сервер при кожній зміні поля, але підтвердження не показує Закрити й відкрити вікно — значення перечитаються з бази (про вкладку «Додатково»)

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

Розклад налаштований, а збір не запускається. Що перевірити?

Серверний режим: без модуля «Використовувати сервер для завантаження даних» розклад нічого не робить. Потім — чи не йшов у цей час інший парсинг і чи немає в журналі операцій рядка «Джерело ID … пропущено розкладом» із причиною (про розклад).

Прогін завершився, але товари в прайсі старі. Чому?

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

Чому з увімкненим рендерингом JavaScript збір іде повільно?

У цьому режимі сервер бере по 4 адреси за раз у 2 потоки замість звичайних 100 адрес у 10 потоків. Вмикайте його лише для сайтів, які без скриптів показують порожню сторінку.

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

Так: пункт бургера «Запустити всі парсери сайтів» у групі «Завантаження джерел» списку прайс-листів. Активні джерела-парсери обробляються по черзі, одне за одним.

Скільки коштує режим «Через сервіс обходу захистів»?

Він тарифікується окремо за кожен запит, за будь-якого тарифу. Запити «Напряму, без проксі» не тарифікуються. Коли гроші на балансі закінчуються, прогін зупиняється з повідомленням про недостатньо коштів.

Суміжні теми

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