Спецификация Краулера - GeeksTricks/Quantisk GitHub Wiki

Алгоритм работы

Краулер будет заниматься обходом сайта, и собирать статистику по каждой скачанной HTML-странице. Для простоты, краулер будет обходить только те ссылки, которые находятся в Sitemap-е сайта. Как правило, новостные сайты содержат очень хороший и полный sitemap.

Ссылку на Sitemap нужно найти в robos.txt для данного сайта.

Цикл работы краулера следующий:

  1. Найти новые сайты для обхода. Инициализировать начало обхода:
  • Просмотреть таблицу Sites. Найти строки в таблице Sites, которым не соответствует НИ ОДНОЙ строки в таблице Pages.
  • Для этого сайта добавить в таблицу Pages строку с URL равным http://<имя_сайта>/robots.txt и LastScanDate равным null.
  1. Обход ссылок, которых по которым раньше не производился обход
  • Найти в таблице Pages ссылку, у которой LastScanDate равен null.
  • Скачать HTML по данной ссылке
  • В зависимости от того, что это была за ссылка, выполняем следующие действия:
    • Если ссылка ведет на robots.txt, находим в HTML-е ссылку на sitemap, и добавляем ее в таблицу Pages
    • Если ссылка ведет на sitemap, находим в HTML-е все ссылки с сайта, добавляем их в Pages.
    • Если ссылка ведет на страницу сайта, найти количество вхождений ключевых слов для каждой личности, и сохранить результаты в таблице PersonPageRank.
  1. Повторных обход по ссылкам, которые ранее обходил краулер
  • Если в таблице Pages нет ссылок, у которых LastScanDate равен null, краулер делает повторных обход по тем ссылка, для которых LastScanDate имеет наименьшее значение.
  • Повторный обход осуществляем только по тем ссылкам, которые ведут на sitemap.
  • Повторный обход по ссылкам целесообразно делать не чаще чем раз в день.
⚠️ **GitHub.com Fallback** ⚠️