Обход по ссылкам — способ узнать устройство чужого каталога, когда сайт ничего о себе не говорит. Но чаще говорит: sitemap.xml есть почти у всякого магазина, и в нём лежит ровно то, что мы иначе добываем заходами. Поэтому готовое решение начинает с карты, а по ссылкам идёт только тогда, когда карты нет.

Что это даёт

Цену. Обход по ссылкам платит заходом за каждую страницу, с которой берёт ссылки: чтобы добраться до тысячи товаров, надо сперва собрать сотню разделов. Карта отдаёт ту же тысячу за один-два захода, и оплаченный объём тратится только на то, ради чего вы платили. Чистоту. В карту сайта не кладут фасеты. Метки, подбор по цвету, сортировки — всё, что описано на странице что не каталог, — владелец сайта индексировать не хочет, а значит и в карту не пишет. Мусор отсекается даром и до первого захода.

Как она ищется

  1. robots.txt — единственное место, где сайт сам говорит, где его карта. Спрашиваем его первым.
  2. Если он молчит — пробуем обычные имена: /sitemap.xml, /sitemap_index.xml, /sitemap-index.xml и ещё пару.
Гадание идёт вторым не из вежливости: каждая проверка имени наугад — это обращение к сайту, и пять промахов подряд там, где адрес уже назван, — потеря времени и репутации выходного адреса. Карта-указатель (<sitemapindex>) разворачивается на этаж вглубь; сама она в результат не попадает — в ней не страницы сайта, а другие карты.

Что из неё берётся

Только адреса — названий разделов в карте нет. Поэтому карта заменяет обходу способ найти страницы, но не способ их понять: чем страница оказалась и как называется, по-прежнему читает модель на самой странице. Адреса группируются по форме пути, и роли раскладывает модель:
Считаются формы у нас, а роли называет модель: по числам «раздел» от «страницы о доставке» не отличить, и ошибка здесь увела бы весь оплаченный объём в блог конкурента. Отбирается при этом только то, что лежит внутри заказанного вами адреса, — карта описывает весь сайт, а платите вы за каталог. Объём делится так: четверть — разделам, остальное — товарам. Разделы дают дерево каталога и имена, к которым привязана каждая строка; товары — то, за чем вы пришли.

Когда карты нет

Обычный исход, а не сбой. Задание идёт прежним путём: разведка смотрит стартовую страницу, находит формы ссылок на разделы и товары, и обход спускается по ним. Так же поступаем, если карта нашлась, но каталога в ней меньше восьми адресов — по обрывку каталога не собрать.
Что именно вышло, видно в записке задания: карта сайта https://shop.example/sitemap-catalog.xml: 2549 адресов, из них товаров 2418, разделов 37, отброшено не каталога 94 — или карты сайта нет — идём по ссылкам.

Обычный обход по своему правилу

Всё сказанное относится к готовым решениям. /v1/crawl с правилом, которое написали вы, карту не ищет и в неё не заглядывает: начальный адрес, селектор ссылок и фильтры там ваши.