Какую работу выполняют роботы пауки поисковых машин – 1.Каково смысловое различие терминов «сеть» и «паутина» в контексте системы компьютерных коммуникаций?2.Что является наименьшей адресуемой единицей информации в WWW? 3.Сопоставьте структуру полного им…

Содержание

Поисковый робот — Википедия

Материал из Википедии — свободной энциклопедии

Поиско́вый ро́бот («веб-пау́к», «веб-краулер» [wɛb-krɔːlə], бот ) — программа, являющаяся составной частью поисковой системы и предназначенная для перебора страниц Интернета с целью занесения информации о них в базу данных поисковика.

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

Владельцы поисковых машин нередко ограничивают глубину проникновения паука внутрь сайта и максимальный размер сканируемого текста, поэтому чересчур большие сайты могут оказаться не полностью проиндексированными поисковой машиной. Кроме обычных пауков, существуют так называемые «дятлы» — роботы, которые «простукивают» проиндексированный сайт, чтобы определить, что он доступен.

Порядок обхода страниц, частота визитов, защита от зацикливания, а также критерии выделения значимой информации определяются алгоритмами информационного поиска.

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

Также многие поисковые системы предоставляют пользователю возможность самостоятельно добавить сайт в очередь для индексирования. Обычно это существенно ускоряет индексирование сайта, а в случаях, когда никакие внешние ссылки не ведут на сайт, вообще оказывается практически единственной возможностью указать на его существование. Ещё одним способом быстрой индексации сайта является добавление на сайт систем веб-аналитики, принадлежащих поисковым сервисам. Например, таких как Google Analytics, Яндекс.Метрика и Рейтинг@Mail.ru от Google, Яндекса и Mail.Ru соответственно.

Ограничить индексацию сайта можно с помощью файла robots.txt. Полная защита от индексации может быть обеспечена другими механизмами, например установкой пароля на странице либо требованием заполнить регистрационную форму перед тем, как получить доступ к содержимому.

Робот не анализирует найденный контент, он только передает его на сервера поисковой системы, где уже происходит его обработка.

Какую работу выполняют роботы поисковых машин. Зачем нужны поисковые роботы. Что такое индексация и зачем она нужна

Оценка статьи (5 / 1)

Просматривая логи сервера, иногда можно наблюдать чрезмерный интерес к сайтам со стороны поисковых роботов. Если боты полезные (например, индексирующие боты ПС) — остается лишь наблюдать, даже если увеличивается нагрузка на сервер. Но есть еще масса второстепенных роботов, доступ которых к сайту не обязателен. Для себя и для вас, дорогой читатель, я собрал информацию и переделал ее в удобную табличку.

Кто такие поисковые роботы

Поисковый бот , или как еще их называют, робот, краулер, паук — ни что иное, как программа, которая осуществляет поиск и сканирование содержимого сайтов, переходя по ссылкам на страницах. Поисковые роботы есть не только у поисковиков. Например, сервис Ahrefs использует пауков, чтобы улучшить данные по обратным ссылкам, Facebook осуществляет веб-скраппинг кода страниц для отображения репостов ссылок с заголовками, картинкой, описанием. Веб-скраппинг — это сбор информации с различных ресурсов.

Использование имен пауков в robots.txt

Как видим, любой серьезный проект, связанный с поиском контента, имеет своих пауков. И иногда остро стоит задача ограничить доступ некоторым паукам к сайту или его отдельным разделам. Это можно сделать через файл robots.txt в корневой директории сайта. Подробнее про настройку роботса я писал ранее, рекомендую ознакомиться.

Обратите внимание — файл robots.txt и его директивы могут быть проигнорированы поисковыми роботами. Директивы являются лишь рекомендациями для ботов.

Задать директиву для поискового робота можно, используя секцию — обращение к юзер-агенту этого робота. Секции для разных пауков разделяются одной пустой строкой.

User-agent: Googlebot Allow: /

User — agent : Googlebot

Allow : /

Выше приведен пример обращения к основному поисковому роботу Google.

Изначально я планировал добавить в таблицу записи о том, как идентифицируют себя поисковые боты в логах сервера. Но так как для SEO эти данные имеют мало значения и для каждого токена агента может быть несколько видов записей, было решено обойтись только названием ботов и их предназначением.

Поисковые роботы G o o g l e

User-agentФункции
GooglebotОсновной краулер-индексатор страниц для ПК и оптимизированных для смартфонов
Mediapartners-GoogleРобот рекламной сети AdSense
APIs-GoogleАгент пользователя APIs-Google
AdsBot-GoogleПроверяет качество рекламы на веб-страницах, предназначенных для ПК
AdsBot-Google-MobileПроверяет качество рекламы на веб-страницах, предназначенных для мобильных устройств
Googlebot-Image (Googlebot)Индексирует изображения на страницах сайта
Googlebot-News (Googlebot)Ищет страницы для добавления в Google Новости
Googlebot-Video (Googlebot)Индексирует видеоматериалы
AdsBot-Google-Mobile-AppsПроверяет качество рекламы в приложениях для устройств Android, работает по тем же принципам, что и обычный AdsBot

Поисковые роботы Я ндекс

User-agentФункции
YandexПри указании данного токена агента в robots.txt, обращение идет ко всем ботам Яндекса
YandexBotОсновной индексирующий робот
YandexDirectСкачивает информацию о контенте сайтов-партнеров РСЯ
YandexImagesИндексирует изображения сайтов
YandexMetrikaРобот Яндекс.Метрики
YandexMobileBotСкачивает документы для анализа на наличие верстки под мобильные устройства
YandexMediaРобот, индексирующий мультимедийные данные
YandexNewsИндексатор Яндекс.Новостей
YandexPagecheckerВалидатор микроразметки
YandexMarketРобот Яндекс.Маркета;
YandexCalendaРобот Яндекс.Календаря
YandexDirectDynГенерирует динамические баннеры (Директ)
YaDirectFetcherСкачивает страницы с рекламными объявлениями для проверки их доступности и уточнения тематики (РСЯ)
YandexAccessibilityBotCкачивает страницы для проверки их доступности пользователям
YandexScreenshotBotДелает снимок (скриншот) страницы
YandexVideoParser

Роботы поисковых систем | Старая Ворона

Роботы поисковых систем — неотъемлемая часть всех поисковиков. Сегодня мы рассмотрим принцип работы поисковых роботов Google и Яндекс, какую работу выполняют роботы поисковых машин. Так же посмотрим на программы поисковых роботов, узнаем базы и названия поисковых роботов этих двух поисковых систем. И много-много еще чего интересного. Но главное, все это я расскажу вам на понятном языке, без заумных фраз и выражений. Поэтому, если вы продвинутый пользователь интернета и вдруг услышите элементарные вещи, просьба тапками не кидаться! Многие, кто хочет узнать о роботах поисковых систем, этих вещей не знает и им нужно с чего-то начинать. Вообщем, прекращаю балаболить и перехожу к самой статье.

Поисковой робот Google
База поисковых роботов Google
Поисковой робот Яндекс
База поисковых роботов Яндекс
Какую работу выполняют роботы поисковых машин
Как узнать приходил ли поисковой робот
Сайт глазами поискового робота

Поисковой робот Google

Для сканирования страниц Google использует сразу несколько поисковых роботов. Все они помогают лучше узнать контент страницы и передать его на сервера поисковика для обработки. Да, да, поисковой робот Google не анализирует и не ранжирует ваши страницы, он вообще ничего с ними не делает. Он лишь собирает информацию и передает ее для анализа. И вот тут кроется одна интересная штука. Роботы поисковых машин, не обязательно это поисковой робот Google, даже это может быть робот социальных сетей или других сайтов (очень многие ресурсы в сети создают себе роботов, помогающих сканировать контент), обладают таким принципом работы, что вряд ли узнают о существовании страницы на вашем сайте, если вы не покажите на нее ни одной ссылкой или не введете адрес на нее через панель инструментов в вебмастере. Поэтому, если вы хотите, чтобы страница попала в индекс поисковиков, на нее обязательно должны вести ссылки и чем больше их будет, тем лучше.

Теперь давайте поговорим о том, как называют поисковых роботов Google и какую работу выполняет роботы поисковых систем.

База поисковых роботов Google

  • Googlebot – это основной робот Google, и поэтому в свою базу поисковых роботов я его поместил самым первым. Он создан для индексации новых страниц сайтов, а также для поиска изменений на существующих страницах.
  • Mediapartners-Google – этого робота Google создала для своей рекламной сети AdSense.
  • APIs-Google – этот агент пользователя применяется для отправки push-уведомлений. Как правило эти уведомления разработчики используют для того, чтобы не перезагружать сервера.
  • AdsBot-Google – еще один робот от Google. Его предназначение — проверять качество рекламы на страницах с десктопной версткой (сайты для стационарах компьютеров)
  • AdsBot-Google-Mobile — то же самое что и предыдущий собрат, но он проверяет качество рекламы на мобильных устройствах
  • Googlebot-Image (Googlebot
    ) – как видно из названия, основная работа этого поискового робота, индексировать изображения на различных страницах в интернете.
  • Googlebot-News (Googlebot) – этот робот индексирует новости для сервиса Google Новости
  • Googlebot-Video (Googlebot) – этот робот создан для поиска и индескации видео по сети.
  • AdsBot-Google-Mobile-Apps – еще один поисковой робот Google, он проверяет качество рекламы в Android-приложениях

Если вы хотите почитать более конкретно о каждом из описанных выше поисковых роботов, то можете сделать это здесь — База поисковых роботов Google

Поисковой робот Яндекс

Так же, как и Google Яндекс тоже обладает своими поисковыми роботами. По сути, они совершают ту же работу, что и у буржуйского поисковика, разве что собирают информацию для сервисов Яндекса. Тем не менее, давайте я так же выложу базу поисковых роботов Яндекса, как я это делал для Google. Вы вкратце посмотрите, что за что отвечает, и если будет интересно, то почитаете более подробно про каждый из них.

База поисковых роботов Яндекс

  • YandexBot — Основной робот Яндекса, индексирует все новые страницы в сети и изменения на уже существующих.
  • YandexDirect – рекламный робот, созданный для сервиса Яндекс Диркет. Сканирует страницы подключенные к этому сервису.
  • YandexImages – здесь думаю все ясно из названия, робот создан для поиска изображений в сети.
  • YandexVideoParser – здесь так же название в помощь, робот для поиска видео в сети.
  • YandexNews – индексирует информацию для сервиса Яндекс Новости
  • YandexMetrika — робот сбора статистики Яндекс Метрики
  • YandexMobileBot – передает сайты для анализа присутствия мобильной верстки сайта. Причем, здесь не важно, имеется ли у сайта мобильная версия или он просто имеет адаптивный дизайн.
  • YandexPagechecker – передает данные на сервер для проверки валидности микроразметки на ресурсе.
  • YandexMarket — робот сбора статистики для Яндекс Маркета;
  • YaDirectFetcher – индексирует страницы с рекламными объявлениями и передает их на анализ для их более точного отображения целевой аудитории.
  • YandexAccessibilityBot – проверяет доступна ли страница ресурса для пользователя

Это далеко не весь список поисковых роботов от Яндекса. Я собрал в этой базе лишь основные (на мой скромный взгляд). Более подробную информацию можно почитать здесь — База поисковых роботов Яндекс

Какую работу выполняют роботы поисковых машин

Как я уже писал выше, основаная работа, которую выполняют роботы поисковых машин – это собирать информацию и передавать ее на сервер, где она анализируется при помощи других роботов, алгоритмов или даже людьми. В моей базе поисковых роботов, которую я приводил выше, вы заметили, что таких роботов огромное количество и каждый из них выполняет свою задачу. Поэтому и называют поисковых роботов по-разному. В зависимости от производимой им работы. Есть роботы пауки или краулеры, к ним относятся основные роботы каждой из поисковых систем (Googlebot, YandexBot и пр.) и некоторые другие. В этот кластер поисковых роботов относят роботы, основной работой которых является индексация веб-ресурсов. Существуют так же «дятлы», их основной задачей является простучать сайт, чтобы определить доступность страницы или какого-то конкретного элемента на станице. Поэтому этого робота и называют Дятел. К примеру, к таким роботам относится YandexAccessibilityBot. Сейчас вы узнали, как называют поискового робота, теперь предлагаю поговорить о том, как узнать приходил ли поисковой робот к вам на сайт.

Как узнать приходил ли поисковой робот

Тут все очень просто. Можно посмотреть логи сервера. У каждого своя админ-панель управления сайтом, поэтому универсальную инструкцию вряд ли мне удастся дать. Но все же я постараюсь адаптивный для всех ответ. В вашей панели управления сайтом должна быть вкладка Логи, Журнал запросов или что что подобное. В ней как раз и хранятся логи.  Приложу для нагладяности скриншот, как это может выглядеть.

Если вы предварительно включали сохранение логов под дням, то у вас будет примерно такая же картина, как на скриншоте ниже. Если нет, то архив записи логов будет по выбранному вами периоду.

Скачивайте или открывайте интересующий вас архив. Для примера мы хотим узнать, приходил ли поисковой робот 28 сентября, значит скачиваем архив лога за 28 число. Открываем его. И в записях ищем интересующих роботов поисковых систем. Названия роботов можно взять из базы поисковых роботов, что я приводил выше.

А вот как выглядит открытый в текстовом редакторе лог за 28 сентября.

На худой конец, если вы не поймете где искать логи, попросите своего хостера дать вам мануал Как узнать приходил ли поисковой робот по логам вашего сервера.

Еще один способ узнать приходил ли поисковой робот, это подключить к своему сайту счетчики Яндекс Метрика. Здесь будем действовать по следующему плану:

Заходим в аналитику своего сайта и выбираем Отчеты > Стандартные отчеты > Мониторинг > Роботы

Теперь можете посмотреть, когда и сколько роботов заходило к вам на сайт

Сайт глазами поискового робота

Многих так же интересует вопрос, как посмотреть на сайт газами поискового робота. Ответить на него нам поможет Google Вебмастер. Если вы подключали его к своему сайту, то можете повторять за моими действиями и увидеть свой сайт глазами поискового робота. Если Вебмастер у вас не установлен, то просто посмотрите красивые картинки )))

И так, первым делом открываем панель Google Вебмастер по адресу https://www.google.com/webmasters/tools/home?hl=ru и выбираем сайт который мы хотим посмотреть глазами поискового робота. Для примера, я возьму этот сайт

Затем в левом столбце меню выбираем пункт Сканирование и подпункт Посмотреть как Googlebot

В открывшемся поле вбиваете любую страницу вашего сайта, которую вы хотите увидеть глазами поискового робота и жмете на кнопку Получить и отобразить

 

Робот начнет работать и по окончанию работы вы получите красивый результат. У меня это выглядело вот так:

Если же нажмете Сканирование, то увидите исходный текст страницы глазами Googlebot

На этом, пожалуй, я закончу сегодняшний обзор о роботах поисковых систем. Надеюсь вы узнали много нового о поисковых роботах Google и Яндекс. База поисковых роботов помогла вам лучше понять, какую работу выполняют роботы поисковых машин. Теперь вы точно будете знать, приходил ли поисковой робот на ваш сайт и даже смогли увидеть сайт глазами поискового робота. Если эта статья вам помогла, то буду признателен, если поделитесь ей в любой из социальных сетей, нажав на соответствующую кнопочку внизу страницы. На этом прощаюсь. Скоро на сайте появятся другие интересные и полезные статьи. Так что, до новых интересных встреч!

Так же советую почитать:

Что такое поисковый робот? Функции поискового робота «Яндекса» и Google. Как работают роботы-сапёры

Роботы поисковой системы

Роботы поисковой системы, иногда их называют «пауки» или «кроулеры» (crawler) — это программные модули, занимающиеся поиском web-страниц. Как они работают? Что же они делают в действительности? Почему они важны?

Учитывая весь шум вокруг поисковой оптимизации и индексных баз данных поисковиков, вы, наверное думаете, что роботы должно быть великие и могущественные существа. Неправда. Роботы поисковика обладают лишь базовыми функциями, похожими на те, которыми обладали одни из первых броузеров, в отношении того, какую информацию они могут распознать на сайте. Как и ранние броузеры, роботы попросту не могут делать определенные вещи. Роботы не понимают фреймов, Flash анимаций, изображений или JavaScript. Они не могут зайти в разделы, защищенные паролем и не могут нажимать на все те кнопочки, которые есть на сайте. Они могут «заткнуться» в процессе индексирования динамических адресов URL и работать очень медленно, вплоть до остановки и безсилием над JavaScript-навигацией.

Как работают роботы поисковой машины?

Поисковые роботы стоит воспринимать, как программы автоматизированного получения данных, путешествующие по сети в поисках информации и ссылок на информацию.

Когда, зайдя на страницу «Submit a URL», вы регистрируете очередную web-страницу в поисковике — в очередь для просмотра сайтов роботом добавляется новый URL. Даже если вы не регистрируете страницу, множество роботов найдет ваш сайт, поскольку существуют ссылки из других сайтов, ссылающиеся на ваш. Вот одна из причин, почему важно строить ссылочную популярность и размещать ссылки на других тематических ресурсах.

Прийдя на ваш сайт, роботы сначала проверяют, есть ли файл robots.txt. Этот файл сообщает роботам, какие разделы вашего сайта не подлежат индексации. Обычно это могут быть директории, содержащие файлы, которыми робот не интересуется или ему не следовало бы знать.

Роботы хранят и собирают ссылки с каждой страницы, которую они посещают, а позже проходят по этим ссылкам на другие страницы. Вся всемирная сеть построена из ссылок. Начальная идея создания Интернет сети была в том, что бы была возможность перемещаться по ссылкам от одного места к другому. Вот так перемещаются и роботы.

«Остроумность» в отношении индексирования страниц в реальном режиме времени зависит от инженеров поисковых машин, которые изобрели методы, используемые для оценки информации, получаемой роботами поисковика. Будучи внедрена в базу данных поисковой машины, информация доступна пользователям, которые осуществляют поиск. Когда пользователь поисковой машины вводит поисковый запрос, производится ряд быстрых вычислений для уверенности в том, что выдается действительно правильный набор сайтов для наиболее релевантного ответа.

Вы можете просмотреть, какие страницы вашего сайта уже посетил поисковый робот, руководствуясь лог-файлами сервера, или результатами статистической обработки лог-файла. Идентифицируя роботов, вы увидите, когда они посетили ваш сайт, какие страницы и как часто. Некоторые роботы легко идентифицируются по своим именам, как Google»s «Googlebot». Другие более скрытые, как, например, Inktomi»s «Slurp». Другие роботы так же могут встречаться в логах и не исключено, что вы не сможете сразу их идентифицировать; некоторые из них могут даже оказаться броузерами, которыми управляют люди.

Помимо идентификации уникальных поисковых роботов и подсчета количества их визитов, статистика также может показать вам агрессивных, поглощающих ширину катала пропускания роботов или роботов, нежелательных для посещения вашего сайта.

Как они читают страницы вашего web-сайта?

Когда поисковой робот посещает страницу, он просматривает ее видимый текст, содержание различных тегов в исходном коде вашей страницы (title tag, meta tags, и т.д.), а так же гиперссылки на странице. Судя по словам ссылок, поисковая машина решает, о чем страница. Есть много факторов, используемых для вычисления ключевых моментов страницы «играющих роль». Каждая поисковая машина имеет свой собственный алгоритм для оценки и обработки информации. В зависимости от того, как робот настроен, информация индексируется, а затем доставляется в базу данных поисковой системы.

После этого, информация, доставленная в индексные базы данных поисковой системы, становится частью поисковика и процесса ранжирования в базе. Когда посетитель существляет запрос, поисковик просматривает всю базу данных для выдачи конечного списка, релевантного поисковому запросу.

Базы данных поисковых систем подвергаются тщательной обработке и приведению в соответствие. Если вы уже попали в базу данных, роботы будут навещать вас период

Что такое поисковые роботы? | Сайт с нуля

Поисковые роботы, иногда их называют «пауки» или «кроулеры» (crawler) — это программные модули, занимающиеся поиском web-страниц. Как они работают? Что же они делают в действительности? Почему они важны?

Эти специальные программы, на самом деле, обладают лишь базовыми функциями, похожими на те, которыми обладали одни из первых браузеров, в отношении того, какую информацию они могут распознать на сайте. Как и ранние браузеры, роботы попросту не могут делать определенные вещи. Роботы не понимают фреймов, Flash анимаций, изображений или JavaScript. Они не могут зайти в разделы, защищенные паролем и не могут нажимать на все те кнопочки, которые есть на сайте.

Как работают роботы поисковой машины?


Поисковые роботы стоит воспринимать, как программы автоматизированного получения данных, путешествующие по сети в поисках информации и ссылок на информацию.

Когда, зайдя на страницу «Submit a URL», вы регистрируете очередную web-страницу в поисковике — в очередь для просмотра сайтов роботом добавляется новый URL. Даже если вы не регистрируете страницу, множество роботов найдет ваш сайт, поскольку существуют ссылки из других сайтов, ссылающиеся на ваш. Вот одна из причин, почему важно строить ссылочную популярность и размещать ссылки на других тематических ресурсах.

Придя на ваш сайт, роботы сначала проверяют, есть ли файл robots.txt. Этот файл сообщает роботам, какие разделы вашего сайта не подлежат индексации. Обычно это могут быть директории, содержащие файлы, которыми робот не интересуется или ему не следовало бы знать.

Роботы хранят и собирают ссылки с каждой страницы, которую они посещают, а позже проходят по этим ссылкам на другие страницы. Вся всемирная сеть построена из ссылок. Начальная идея создания Интернет сети была в том, что бы была возможность перемещаться по ссылкам от одного места к другому. Вот так перемещаются и роботы.

Будучи внедрена в базу данных поисковой машины, информация доступна пользователям, которые осуществляют поиск. Когда пользователь поисковой машины вводит поисковый запрос, производится ряд быстрых вычислений для уверенности в том, что выдается действительно правильный набор сайтов для наиболее релевантного ответа.

Вы можете просмотреть, какие страницы вашего сайта уже посетил поисковый робот, руководствуясь лог-файлами сервера, или результатами статистической обработки лог-файла. Идентифицируя роботов, вы увидите, когда они посетили ваш сайт, какие страницы и как часто. Некоторые роботы легко идентифицируются по своим именам, как Google’s «Googlebot». Другие более скрытые, как, например, Inktomi’s «Slurp». Другие роботы так же могут встречаться в логах и не исключено, что вы не сможете сразу их идентифицировать; некоторые из них могут даже оказаться браузерами, которыми управляют люди.

Помимо идентификации уникальных поисковых роботов и подсчета количества их визитов, статистика также может показать вам агрессивных, поглощающих ширину катала пропускания роботов или роботов, нежелательных для посещения вашего сайта.

Как они читают страницы вашего web-сайта?

Когда поисковый робот посещает страницу, он просматривает ее видимый текст, содержание различных тегов в исходном коде вашей страницы (title tag, meta tags, и т.д.), а так же гиперссылки на странице. Судя по словам ссылок, поисковая машина решает, о чем страница. Есть много факторов, используемых для вычисления ключевых моментов страницы. Каждая поисковая машина имеет свой собственный алгоритм для оценки и обработки информации. В зависимости от того, как робот настроен, информация индексируется, а затем доставляется в базу данных поисковой системы.

После этого, информация, доставленная в индексные базы данных поисковой системы, становится частью поисковика и процесса ранжирования в базе. Когда посетитель осуществляет запрос, поисковик просматривает всю базу данных для выдачи конечного списка, релевантного поисковому запросу.

Базы данных поисковых систем подвергаются тщательной обработке и приведению в соответствие. Если вы уже попали в базу данных, роботы будут навещать вас периодически для сбора любых изменений на страницах и уверенности в том, что обладают самой последней информацией. Количество посещений зависит от установок поисковой машины, которые могут варьироваться от ее вида и назначения.

Иногда поисковые роботы не в состоянии проиндексировать web-сайт. Если ваш сайт упал или на сайт идет большое количество посетителей, робот может быть бессилен в попытках его индексации. Когда такое происходит, сайт не может быть переиндексирован, что зависит от частоты его посещения роботом. В большинстве случаев, роботы, которые не смогли достичь ваших страниц, попытаются позже, в надежде на то, что ваш сайт в ближайшее время будет доступен.

Также стоит прочитать

Что такое роботы поисковики Яндекса и Google

Роботы поисковики Google

Основной механизм индексации контента WWW у Google носит название Googlebot. Его механизм настроен так, чтобы ежедневно изучать миллиарды страниц с целью поиска новых или измененных документов. При этом бот сам определяет, какие страницы сканировать, а какие — игнорировать.

Для этого краулера важное значение имеет наличие на сайте файла Sitemap, предоставляемого владельцем ресурса. Сеть компьютеров, обеспечивающая его функционирование настолько мощна, что бот может делать запросы к страницам вашего сайта раз в пару секунд. А настроен бот так, чтобы за один заход проанализировать большее количество страниц, чтобы не вызывать нагрузку на сервер. Если работа сайта замедляется от частых запросов паука, скорость сканирования можно изменить, настроив в Search Console. При этом повысить скорость сканирования, к сожалению, нельзя.

Бота Google можно попросить повторно просканировать сайт. Для этого необходимо открыть Search Console и найти функцию Добавить в индекс, которая доступна пользователям инструмента Просмотреть как Googlebot. После сканирования появится кнопка Добавить в индекс. При этом Google не гарантирует индексацию всех изменений, поскольку процесс связан с работой «сложных алгоритмов».

Боты Google также представляются определенным user-agent. Например, Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) — индексирующий Googlebot. Googlebot-Image/1.0 — Google картинки.

Заблокировать доступ Googlebot к всему сайту или его каталогам можно с помощью все того же файла robots.txt. Например, «прочитав» в файле код

User-agent: googlebot

Disallow: /books/

паук откажется от индексации каталога books. Боты Google полностью подчиняются «Стандарту исключений для роботов».

Чтобы понять, как пауки Google видят ваш сайт (с учетом запретов), рекомендуется воспользоваться инструментом Сканер Google для сайтов. И почувствовать себя ботом.

Поиск под капотом Глава 1. Сетевой паук / Habr

Умение искать информацию в Интернете является жизненно необходимым. Когда мы нажимаем на кнопку «искать» в нашей любимой поисковой системе, через доли секунды мы получаем ответ.

Большинство совершенно не задумывается о том, что же происходит «под капотом», а между тем поисковая система — это не только полезный инструмент, но еще и сложный технологический продукт. Современная поисковая система для своей работы использует практически все передовые достижения компьютерной индустрии: большие данные, теорию графов и сетей, анализ текстов на естественном языке, машинное обучение, персонализацию и ранжирование. Понимание того, как работает поисковая система, дает представление об уровне развития технологий, и поэтому разобраться в этом будет полезно любому инженеру.

В нескольких статьях я шаг за шагом расскажу о том, как работает поисковая система, и, кроме того, для иллюстрации я построю свой собственный небольшой поисковый движок, чтобы не быть голословным. Этот поисковый движок будет, конечно же, «учебным», с очень сильным упрощением того, что происходит внутри гугла или яндекса, но, с другой стороны, я не буду упрощать его слишком сильно.

Первый шаг — это сбор данных (или, как его еще называют, краулинг).


Веб — это граф

Та часть Интернета, которая нам интересна, состоит из веб-страниц. Для того чтобы поисковая система смогла найти ту или иную веб-страницу по запросу пользователя, она должна заранее знать, что такая страница существует и на ней содержится информация, релевантная запросу. Пользователь обычно узнает о существовании веб-страницы от поисковой системы. Каким же образом сама поисковая система узнает о существовании веб-страницы? Ведь никто ей не обязан явно сообщать об этом.

К счастью, веб-страницы не существуют сами по себе, они содержат ссылки друг на друга. Поисковый робот может переходить по этим ссылкам и открывать для себя все новые веб-страницы.

На самом деле структура страниц и ссылок между ними описывает структуру данных под названием «граф». Граф по определению состоит из вершин (веб-страниц в нашем случае) и ребер (связей между вершинами, в нашем случае — гиперссылок).

Другими примерами графов являются социальная сеть (люди — вершины, ребра — отношения дружбы), карта дорог (города — вершины, ребра — дороги между городами) и даже все возможные комбинации в шахматах (шахматная комбинация — вершина, ребро между вершинами существует, если из одной позиции в другую можно перейти за один ход).

Графы бывают ориентированными и неориентированными — в зависимости от того, указано ли на ребрах направление. Интернет представляет собой ориентированный граф, так как по гиперссылкам можно переходить только в одну сторону.

Для дальнейшего описания мы будем предполагать, что Интернет представляет собой сильно связный граф, то есть, начав в любой точке Интернета, можно добраться до любой другой точки. Это допущение — очевидно неверное (я могу легко создать новую веб-страницу, на которую не будет ссылок ниоткуда и соответственно до нее нельзя будет добраться), но для задачи проектирования поисковой системы его можно принять: как правило, веб-страницы, на которые нет ссылок, не представляют большого интереса для поиска.

Небольшая часть веб-графа:


Алгоритмы обхода графа: поиск в ширину и в глубину


Поиск в глубину

Существует два классических алгоритма обхода графов. Первый — простой и мощный — алгоритм называется поиск в глубину (Depth-first search, DFS). В его основе лежит рекурсия, и он представляет собой следующую последовательность действий:


  1. Помечаем текущую вершину обработанной.
  2. Обрабатываем текущую вершину (в случае поискового робота обработкой будет просто сохранение копии).
  3. Для всех вершин, в которые можно перейти из текущей: если вершина еще не обработана, рекурсивно обрабатываем и ее тоже.

Код на Python, имплементирующий данный подход буквально дословно:

seen_links = set() 
def dfs(url):
    seen_links.add(url)
    print('processing url ' + url)
    html = get(url)
    save_html(url, html)
    for link in get_filtered_links(url, html):
        if link not in seen_links:
           dfs(link)

dfs(START_URL)

Полный код на github

Приблизительно таким же образом работает, например, стандартная линуксовая утилита wget с параметром -r, показывающим, что нужно выкачивать сайт рекурсивно:

wget -r habrahabr.ru

Метод поиска в глубину целесообразно применять для того, чтобы обойти веб-страницы на небольшом сайте, однако для обхода всего Интернета он не очень удобен:


  1. Содержащийся в нем рекурсивный вызов не очень хорошо параллелится.
  2. При такой реализации алгоритм будет забираться все глубже и глубже по ссылкам, и в конце концов у него, скорее всего, не хватит места в стеке рекурсивных вызовов и мы получим ошибку stack overflow.

В целом обе эти проблемы можно решить, но мы вместо этого воспользуемся другим классическим алгоритмом — поиском в ширину.


Поиск в ширину

Поиск в ширину (breadth-first search, BFS) работает схожим с поиском в глубину образом, однако он обходит вершины графа в порядке удаленности от начальной страницы. Для этого алгоритм использует структуру данных «очередь» — в очереди можно добавлять элементы в конец и забирать из начала.


  1. Алгоритм можно описать следующим образом:
  2. Добавляем в очередь первую вершину и в множество «увиденных».
  3. Если очередь не пуста, достаем из очереди следующую вершину для обработки.
  4. Обрабатываем вершину.
  5. Для всех ребер, исходящих из обрабатываемой вершины, не входящих в «увиденные»:
    1. Добавить в «увиденные»;
    2. Добавить в очередь.
  6. Перейти к пункту 2.

Код на python:

def bfs(start_url):
    queue = Queue()
    queue.put(start_url)
    seen_links = {start_url} 

    while not (queue.empty()):
        url = queue.get()
        print('processing url ' + url)
        html = get(url)
        save_html(url, html)
        for link in get_filtered_links(url, html):
            if link not in seen_links:
                queue.put(link)
                seen_links.add(link)

bfs(START_URL)

Полный код на github

Понятно, что в очереди сначала окажутся вершины, находящиеся на расстоянии одной ссылки от начальной, потом двух ссылок, потом трех ссылок и т. д., то есть алгоритм поиска в ширину всегда доходит до вершины кратчайшим путем.

Еще один важный момент: очередь и множество «увиденных» вершин в данном случае используют только простые интерфейсы (добавить, взять, проверить на вхождение) и легко могут быть вынесены в отдельный сервер, коммуницирующий с клиентом через эти интерфейсы. Эта особенность дает нам возможность реализовать многопоточный обход графа — мы можем запустить несколько одновременных обработчиков, использующих одну и ту же очередь.


Robots.txt

Прежде чем описать собственно имплементацию, хотелось бы отметить, что хорошо ведущий себя краулер учитывает запреты, установленные владельцем веб-сайта в файле robots.txt. Вот, например, содержимое robots.txt для сайта lenta.ru:

User-agent: YandexBot
Allow: /rss/yandexfull/turbo

User-agent: Yandex
Disallow: /search
Disallow: /check_ed
Disallow: /auth
Disallow: /my
Host: https://lenta.ru

User-agent: GoogleBot
Disallow: /search
Disallow: /check_ed
Disallow: /auth
Disallow: /my

User-agent: *
Disallow: /search
Disallow: /check_ed
Disallow: /auth
Disallow: /my

Sitemap: https://lenta.ru/sitemap.xml.gz

Видно, что тут определены некоторые разделы сайта, которые запрещено посещать роботам яндекса, гугла и всем остальным. Для того чтобы учитывать содержимое robots.txt в языке python, можно воспользоваться реализацией фильтра, входящего в стандартную библиотеку:

In [1]: from urllib.robotparser import RobotFileParser
   ...: rp = RobotFileParser()
   ...: rp.set_url('https://lenta.ru/robots.txt')
   ...: rp.read()
   ...: 

In [3]: rp.can_fetch('*', 'https://lenta.ru/news/2017/12/17/vivalarevolucion/')
Out[3]: True

In [4]: rp.can_fetch('*', 'https://lenta.ru/search?query=big%20data#size=10|sort=2|domain=1
   ...: |modified,format=yyyy-MM-dd')
Out[4]: False

Имплементация

Итак, мы хотим обойти Интернет и сохранить его для последующей обработки.

Конечно, в демонстрационных целях обойти и сохранить весь Интернет не выйдет — это стоило бы ОЧЕНЬ дорого, но разрабатывать код мы будем с оглядкой на то, что потенциально его можно было бы масштабировать до размеров всего Интернета.

Это означает, что работать мы должны на большом количестве серверов одновременно и сохранять результат в какое-то хранилище, из которого его можно будет легко обработать.
В качестве основы для работы своего решения я выбрал Amazon Web Services, так как там можно легко поднять определенное количество машин, обработать результат и сохранить его в распределенное хранилище Amazon S3. Похожие решения есть, например, у google, microsoft и у яндекса.


Архитектура разработанного решения

Центральным элементом в моей схеме сбора данных является сервер очереди, хранящий очередь URL, подлежащих скачиванию и обработке, а также множество URL, которые наши обработчики уже «видели». В моей имплементации это они основаны на простейших структурах данных Queue и set языка python.

В реальной продакшн-системе, скорее всего, вместо них стоило бы использовать какое-нибудь существующее решение для очередей (например, kafka) и для распределенного хранения множеств (например, подошли бы решения класса in-memory key-value баз данных типа aerospike). Это позволило бы достичь полной горизонтальной масштабируемости, но в целом нагрузка на сервер очереди оказывается не очень большой, поэтому в таком масштабировании в моем маленьком демо-проекте смысла нет.

Рабочие серверы периодически забирают новую группу URL для скачивания (забираем сразу помногу, чтобы не создавать лишнюю нагрузку на очередь), скачивают веб-страницу, сохраняют ее на s3 и добавляют новые найденные URL в очередь на скачивание.

Для того чтобы снизить нагрузку на добавление URL, добавление тоже происходит группами (добавляю сразу все новые URL, найденные на веб-странице). Еще я периодически синхронизирую множество «увиденных» URL с рабочими серверами, чтобы осуществлять предварительную фильтрацию уже добавленных страниц на стороне рабочей ноды.

Скачанные веб-страницы я сохраняю на распределенном облачном хранилище (S3) — это будет удобно впоследствии для распределенной обработки.

Очередь периодически отправляет статистику по количеству добавленных и обработанных запросов в сервер статистики. Статистику отправляем суммарно и в отдельности для каждой рабочей ноды — это необходимо для того, чтобы было понятно, что скачивание происходит в штатном режиме. Читать логи каждой отдельной рабочей машины невозможно, поэтому следить за поведением будем на графиках. В качестве решения для мониторинга скачивания я выбрал graphite.


Запуск краулера

Как я уже писал, для того чтобы скачать весь Интернет, нужно огромное количество ресурсов, поэтому я ограничился только маленькой его частью — а именно сайтами habrahabr.ru и geektimes.ru. Впрочем, ограничение это довольно условное, и расширение его на другие сайты — просто вопрос количества доступного железа. Для запуска я реализовал простенькие скрипты, которые поднимают новый кластер в облаке amazon, копируют туда исходный код и запускают соответствующий сервис:

#deploy_queue.py 

from deploy import *
def main():
    master_node = run_master_node()
    deploy_code(master_node)
    configure_python(master_node)
    setup_graphite(master_node)
    start_urlqueue(master_node)

if __name__ == main():
    main()
#deploy_workers.py 
#run as: http://<queue_ip>:88889
from deploy import *

def main():
    master_node = run_master_node()
    deploy_code(master_node)
    configure_python(master_node)
    setup_graphite(master_node)
    start_urlqueue(master_node)

if __name__ == main():
    main()

Код скрипта deploy.py, содержащего все вызываемые функции

Использование в качестве инструмента статистики graphite позволяет рисовать красивые графики:

Красный график — найденные URL, зеленый — скачанные, синий — URL в очереди. За все время скачано 5.5 миллионов страниц.


Количество скрауленных страниц в минуту в разбивке по рабочим нодам. Графики не прерываются, краулинг идет в штатном режиме.


Результаты

Скачивание habrahabr и geektimes у меня заняло три дня.
Можно было бы скачать гораздо быстрее, увеличив количество экземпляров воркеров на каждой рабочей машине, а также увеличив количество воркеров, но тогда нагрузка на сам хабр была бы очень большой — зачем создавать проблемы любимому сайту?
В процессе работы я добавил пару фильтров в краулер, начав фильтровать некоторые явно мусорные страницы, нерелевантные для разработки поискового движка.

Разработанный краулер, хоть и является демонстрационным, но в целом масштабируется и может применяться для сбора больших объемов данных с большого количества сайтов одновременно (хотя, возможно, в продакшне есть смысл ориентироваться на существующие решения для краулинга, такие как heritrix. Реальный продакшн-краулер также должен запускаться периодически, а не разово, и реализовывать много дополнительного функционала, которым я пока пренебрег.

За время работы краулера я потратил примерно 60 $ на облако amazon. Всего скачано 5.5 млн страниц, суммарным объемом 668 гигабайт.

В следующей статье цикла я построю индекс по скачанным веб-страницам при помощи технологий больших данных и спроектирую простейший движок собственно поиска по скачанным страницам.

Код проекта доступен на github


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *