6.2 Налаштування Планувальника Scheduler
Планувальник Scheduler це компонент WebMagic для управління списком черги URL-ів. Загалом планувальник виконує 2 функції:
- Управління списком черги URL-ів, що чекають на обробки пошукачем
- Відфільтровувати повтори URL-ів
WebMagic мають деякі загальні Scheduler. Якщо ви хочете запустити простий пошукач, то вам не потрібно налаштувати Планувальник Scheduler. Але має сенс для вас знати деякі з функцій.
| Class | Опис | Зауваження |
|---|---|---|
| DuplicateRemovedScheduler | абстрактний клас - надає деякі шаблонні методи | роширюючи його можна впроваджувати свої власні функції |
| QueueScheduler | використовує чергу пам'яті для збереження URL | |
| PriorityScheduler | використовує пріоритети для черги пам'яті при збереженні URL | використання пам'яті більше, ніж QueueScheduler, але тільки коли ви встановлюєте пріоритети запросів. Використання PriorityScheduler необхідне тільки якщо потрібно вказувати пріоритетність запитів |
| FileCacheQueueScheduler | використовується для зберігання URL у файл, коли виходять з програми і при наступному запуску можна продовжити сканування пошукачем URL, що були попередньо збережені в файлі. | Потрібно прописати шлях до файлу. Буде створено два файли .urls.txt та .cursor.txt |
| RedisScheduler | використовувати Redis для збереження черги, він може сканувати пошукачем у Інтернеті використовуючи розподілену систему | необхідно встановити Redis і запустити його |
З версії 0.5.1 перероблено планувальник Scheduler - видалення дублів було винесено до окремого інтерфейсу: DuplicateRemover. Завдяки цьому ви можете встановити різні DuplicateRemover для одного планувальника Scheduler. Є два способи видалити дублікати.
| Class | Опис |
|---|---|
| HashSetDuplicateRemover | використовує HashSet, щоб видаляти, що потребує великий обсяг пам'яті |
| BloomFilterDuplicateRemover | використовує Фільтр Блума BloomFilter для видалення, використовує менше пам'яті. Але він може не врахувати декілька URL |
Всі планувальники за замовчуванням для видалення використовують HashSetDuplicateRemover (окрім RedisScheduler). Якщо у вас дуже багато URL, рекомендуємо використовувати BloomFilterDuplicateRemover. Наприклад:
spider.setScheduler(new QueueScheduler()
.setDuplicateRemover(new BloomFilterDuplicateRemover(10000000)) //10000000 is the estimate value of urls ///10000000 приблизне значення кількості URL-ів
)