robots.txt - между блоками пользовательского агента требуются пустые строки или необязательно? - PullRequest
1 голос
/ 27 января 2020

Кажущиеся противоречивыми описания, приведенные в авторитетных источниках документации.

Стандарт для исключения роботов :

(«запись» относится к каждому блоку агента пользователя)

"Файл состоит из одной или нескольких записей, разделенных одной или несколькими пустыми строками (оканчивается CR, CR / NL или NL). Каждая запись содержит строки вида. .. ".

Google Robot.txt Технические характеристики :

" ... Обратите внимание на опциональное использование белого цвета -space и пустые строки для улучшения читабельности. "

Итак - на основе имеющейся у нас документации - эта пустая строка здесь обязательно?

User-agent: *
Disallow: /this-directory/

User-agent: DotBot
Disallow: /this-directory/
Disallow: /and-this-directory/

или это нормально?

User-agent: *
Disallow: /this-directory/
User-agent: DotBot
Disallow: /this-directory/
Disallow: /and-this-directory/

1 Ответ

1 голос
/ 27 января 2020

Google Robots.txt Библиотека анализатора и сопоставления не имеет специальной обработки пустых строк. Python urllib.robotparser всегда интерпретирует пустые строки как начало новой записи, хотя они не являются строго обязательными, и анализатор также распознает User-Agent: как единое целое. Поэтому обе ваши конфигурации будут нормально работать с любым парсером.

Это, однако, указывает c на два выдающихся парсера robots.txt; вы все равно должны написать его наиболее общепринятыми и однозначными способами, позволяющими справиться с плохо написанными пользовательскими парсерами.

...