Все материалы/
Практическая работа с SEO

Как извлечь URL из sitemap и не собрать картинки вместо страниц

Список URL из карты сайта пригодится для инвентаризации, миграции и проверки разделов. Сначала отделите адреса страниц от дочерних карт и ресурсов: иначе аккуратный экспорт будет описывать совсем другой набор объектов.

Определите тип открытого файла

Откройте sitemap из robots.txt или адрес, предоставленный владельцем сайта. Сохраните исходный URL и дату получения. Корневой элемент urlset означает список записей страниц. В sitemapindex значения loc ведут к дочерним картам, а не к товарам или статьям.
Если перед вами индекс, перечислите дочерние файлы и выберите нужные для задачи разделы. Экспорт только каталога товаров нельзя назвать полной инвентаризацией сайта. Недоступный дочерний файл оставьте в списке пробелов; отсутствие его строк не говорит, что раздел пуст. При повторном получении также сохраните дату: состав карты мог измениться.

Выбирайте loc внутри записи url

Используйте XML-парсер или импорт, который учитывает пространство имён sitemap. Для списка страниц нужны значения loc внутри url. Поиск всех элементов с именем loc без учёта структуры может добавить изображения и другие ресурсы из расширений карты.
Сохраняйте исходный адрес и корректно раскрывайте XML-сущности. Амперсанд в параметрах URL может быть записан как сущность, но остаётся частью адреса. Простое извлечение по строкам ненадёжно для компактного XML, переносов внутри элемента и закодированных значений. Важна структура документа, а не способ его оформления.

Условный пример магазина с двумя картами

Представим вымышленный индекс с products.xml и advice.xml. В карте товаров три страницы и ссылка на изображение одной из них. В карте советов две страницы. Инвентаризация страниц содержит пять строк, а не восемь, полученных из смешивания страниц, картинки и дочерних карт.
Числа нужны только для объяснения. Добавьте к каждой строке колонку исходного файла. Если владелец спросит, откуда появился адрес, вы сможете вернуться к записи карты. Для сравнений после миграции эта проверяемость полезнее красивого общего количества URL. Она также позволяет отличить частичный экспорт от полного набора выбранных разделов.
ЭлементЧто обозначаетВ список страниц
sitemapindex / sitemap / locДочерняя картаНет, открыть дочерний файл
urlset / url / locАдрес страницыДа
image:locИзображениеНет
lastmodЗаявленная дата измененияВ отдельную колонку при необходимости

Очищайте список без потери различий

В объединённом списке удалите точные дубли строк, сохранив сведения о файлах-источниках. Не переводите пути автоматически в нижний регистр и не отбрасывайте параметры: разные адреса могут обозначать разные ресурсы. Неожиданные домены, относительные и некорректные адреса пометьте для проверки.
При сравнении двух выгрузок храните даты получения и правило сопоставления. «Нет в новой карте» означает отсутствие в выбранном наборе файлов. Из этого ещё не следует, что страница удалена, закрыта, перенаправлена или исключена из индекса. Для каждого такого вывода требуется отдельное наблюдение.

Отделите извлечение от технического аудита

Правильно прочитанный XML не доказывает доступность и индексируемость страниц. Коды HTTP, robots, canonical и noindex проверяются отдельно. Массовый обход также требует явных границ; он не должен незаметно запускаться вместе с получением простого списка.
Публичный инструмент извлечения в этом разделе пока планируется. Сегодня можно выполнить описанную инвентаризацию и использовать её для определения объёма аудита в проекте SEODatum. Сопоставляйте список с фактическими результатами проверки, сохраняя непроверенные пункты в карточке ниже. Перед передачей файла коллеге объясните, какие выводы он позволяет сделать, а какие ещё потребуют данных.
Исходная карта: Дата получения: Включённые дочерние файлы: Недоступные файлы: Число URL до и после удаления дублей: Правило нормализации: Что не проверялось:

Сохраните данные и решения в одном проекте

Ведите группы запросов и собранные проверки в проекте SEODatum, чтобы связывать наблюдения со следующими действиями по страницам.
Открыть SEODatum