Компания Google опубликовала (https://opensource.googleblog.com/2019/07/googles-robotstxt-... под лицензией Apache 2.0 код С++ библиотеки (https://github.com/google/robotstxt) для разбора файлов robots.txt, содержащих правила (https://ru.wikipedia.org/wiki/%D0%A1%D1%... (REP (https://www.robotstxt.org/norobots-rfc.txt), Robots Exclusion Protocol) для исключения контента из области индексации ботами поисковых систем. Одновременно компания Google выступила с инициативой продвижения протокола REP в качестве интернет-стандарта после 25 лет существования в роли стандарта де-факто.
Библиотека развивается уже около 20 лет, соответствует стандарту C++11 и учитывает различные нюансы оформления, встречающиеся в обиходе. Вместе с библиотекой также предложен код утилиты для проверки правильности определения правил в robots.txt. Представленный код используется в рабочих системах Google, выполняющих обработку robots.txt.
URL: https://opensource.googleblog.com/2019/07/googles-robotstxt-...
Новость: https://www.opennet.me/opennews/art.shtml?num=51003
ну прям рокет сайнс!...
куча кода, что делается в 10 строк...
ну ка, хотел бы посмотреть на парсер robots в 10 или хотябы в 100 строк кодаобрадуете нас своим изобретением?
Что делается в 10 строк != парсер robots.txt
Он мог и про отдельные функции говорить и вообще с другим языком сравнивать
Это всё для получения «классов» на гитхабе.
User-agent: Googlebot
Disallow: /
> Библиотека ... учитывает различные нюансы оформления,Костыли чтоль? )))
Опечатки, например, diasllow
эксперты опеннета, как всегда. Нет, думать за вас и исправлять ваши опечатки этот парсер не обучен.
Но есть "нюансы", изучайте:
https://github.com/google/robotstxt/blob/master/robots_test....
>> Опечатки, например, diasllow
> эксперты опеннета, как всегда. Нет, думать за вас и исправлять ваши опечатки
> этот парсер не обучен.Эк вы … самокритичны (впрочем, как обычно):
https://github.com/google/robotstxt/blob/master/robots.cc#L696
bool ParsedRobotsKey::KeyIsDisallow(absl::string_view key) {
return (
absl::StartsWithIgnoreCase(key, "disallow") ||
(kAllowFrequentTypos && ((absl::StartsWithIgnoreCase(key, "dissallow")) ||
(absl::StartsWithIgnoreCase(key, "dissalow")) ||
(absl::StartsWithIgnoreCase(key, "disalow")) ||
(absl::StartsWithIgnoreCase(key, "diasllow")) ||
(absl::StartsWithIgnoreCase(key, "disallaw")))));
о, хренассе, это вот прямо в основном коде.впрочем, пользы от поделки все равно никакой - https://www.opennet.me/openforum/vsluhforumID3/117784.html#11
(ведь сиплюсплюсики такой низкоуровневый язычок, что для банальной задачи обработки текстового файла из десятка предопределенных строк надо притащить за собой мильен каких-то мусорных гуглоисходников и собирать это все нескучной сборочной системочкой)
просто бесценный проект - целый индус трудился и больше часа. да и новость тоже революционная. ждём hello world 2
ты просто еще зависимости не скачал - там не "целый индус", там вся его бангалорская родня в количестве 3000000 обезьян трудилась.
И еще пяток миллионов китайцев припахала за ними горшки выносить.
за 20 лет, карл! ты погляди чего наваляли! поди с нуля переписывали 80 раз (по 4 раза в год)
> поди с нуля переписывали 80 раз (по 4 раза в год)конечно - ты ради кода в 1,5k строк (работающего банально - со строками) будешь изучать что это за нёх?
absl::StartsWithIgnoreCase() - и т д?Полагаю, ты просто перепишешь большую часть на чем-то что либо нужно в другой работе, либо просто уже знаешь.
Вот и следующий копчоный то же самое сделает.
>содержащих правила (REP, Robots Exclusion Protocol) для исключения контента из области индексации ботами поисковых системРКН обяжет всех поисковиков к обязательному использованию. А правилами исключения захочет рулить самостоятельно.
Building the libraryBazel is the official build system for the library
расходимся, ребята - чтобы собрать "библиотеку" из ЦЕЛОГО ОДНОГО файла - как обычно у гугля, нужно себе нескучных зондопрограмм понаставить пару терабайт.
О, эксперты-любители автокрапа подъехали? Его то уж точно не пара терабайт, да?
Осталась мелочь - догадаться, что сам Гугл вовсе не обязательно использует этот парсер в том виде, в каком он опубликован, но уж всяко хочет, чтобы мы верили, что используемый им парсер именно такой.
ты хочешь сказать, что моя строчка с dissalow: / все же не будет им обрабатываться "правильно"?да ну, не может быть!
PVS-Studio хотел, но не смог найти баги в robots.txt - https://www.viva64.com/ru/b/0638/