Процесс общего обходчика
Процесс для типичного многопоточного искателя выглядит следующим образом:
У нас есть структура данных очереди, которая называется frontier
,Недавно обнаруженные URL (или начальные точки, так называемые начальные значения) добавляются в эту структуру данных.Кроме того, для каждого URL-адреса присваивается уникальный идентификатор, чтобы определить, был ли ранее посещен данный URL-адрес.
Потоки сканера получают URL-адреса из frontier
и планируют их длядальнейшая обработка.
Фактическая обработка начинается:
- Значение
robots.txt
для данного URL-адреса определяется и анализируется в соответствии с критериями исключения и вежливым поисковым роботом (настраивается) - Далее поток проверяет вежливость, т.е. время ожидания, прежде чем снова посещать тот же хост URL.
- Фактический URL просматривается сканером и загружается контент (это может быть буквально все)
- Если у нас есть HTML-контент, этот контент анализируется, и потенциальные новые URL-адреса извлекаются и добавляютсядо границы (в
crawler4j
это можно контролировать с помощью shouldVisit(...)
).
Весь процесс повторяется до тех пор, пока к frontier
не будут добавлены новые URL.
Общая (сфокусированная) архитектура искателя
Помимо деталей реализации crawler4j
более или менее общая (сфокусированная) архитектура искателя (включеноодин сервер / ПК) выглядит следующим образом:
Отказ от ответственности: Изображение - моя собственная работа.Пожалуйста, уважайте это, ссылаясь на этот пост.