Парсинг robots.txt файлов на php

robots.txt  файл с инструкциями для поисковых машин. Обычно в нём указывают список url, которые нужно запретить к индексации (директива Disallow). Но, это далеко не все возможности robots.txt. В robots.txt можно:

  1. задать главное зеркало сайта с помощью директивы Host
  2. указать ссылки на файлы sitemap с помощью директивы Sitemap
  3. указать минимальный интервал в секундах с помощью директивы Crawl-delay, не ранее чем через который робот сделает запрос к следующей странице сайта. Обычно используют, если сайт не справляется с нагрузкой
  4. указать get-параметры, которые не стоит учитывать при индексации страниц с помощью директивы Clean-param
  5. задать urls, которые разрешены к индексации с помощью директивы Allow (протиповоложенность директиве Disallow)

Итак, задача:

Нужно парсить содержимое всех директив robots.txt на php 

Актуальную версию парсера robots.txt вы всегда можете скачать с моего репозитория на github. Я сделал online версию для проверки парсера, чтобы можно было его "пощупать". Получить все правила robots.txt файла с помощью этой библиотеки можно так:

$robotsTxtContent = file_get_contents('http://example.com/robots.txt');
$parser = new RobotsTxtParser($robotsTxtContent);
print_r($parser->getRules());

Моя версия парсера имеет следующие преимущества перед аналогичными решениями, которые я находил в Интернет:

  1. обрезаются комментарии (всё, что следует после символа "#" и до символа перевода строки)
  2. парс значения директивы Clean-param, учитывая синтаксис директивы с указанием path
  3. правильный парс директивы Host. Дело в том, что Host — межсекционная директива. Во-первых, при наличии двух директив Host поисковые боты учитывают только первую найденную по-порядку. Во-вторых, т.к. директива межсекционная, то, даже если она принадлежит секции User-agent: YandexBot, то все равно будет учитываться всеми ботами.
  4. покрытость unit-тестами с множеством кейсов

Если вы придумали кейс, который библиотека не покрывает, или нашли такой сайт, то вы можете написать об этом здесь.

Fork me on GitHub

 
Поисковые запросы, по которым приходили пользователи
 
 
 
 

icon Комментарии 0

Ваш комментарий к статье.. (для авторизованных)

ctrl+enter

icon Вход в систему

зарегистрироваться
НОВЫЕ ПОЛЬЗОВАТЕЛИ