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-ів
)