Научная статья на тему 'АНАЛИЗ СОВРЕМЕННЫХ ПОИСКОВЫХ РОБОТОВ'

АНАЛИЗ СОВРЕМЕННЫХ ПОИСКОВЫХ РОБОТОВ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
80
24
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПОИСКОВАЯ СИСТЕМА / ПОИСКОВЫЙ АГЕНТ / ПОИСКОВЫЙ РОБОТ / ПОИСКОВЫЙ ПАУК / ПОИСКОВЫЙ СКРЕБОК

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Аладин Д.В., Афанасьев Г.И.

Данная статья посвящена аналитическому обзору современных поисковых роботов. Приведены общие правила и принципы построения поисковых агентов. Рассмотрены варианты применения поисковых роботов. Помимо этого, представлены примеры передовых Open Source проектов поисковых агентов.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

ANALYSIS OF MODERN SEARCH ROBOTS

This article reviews contemporary search robots. It is spoken in detail about general rules and principles of search agents. Examples of practical applications of search engines are given. In addition, the leading projects of the Open Source community are considered.

Текст научной работы на тему «АНАЛИЗ СОВРЕМЕННЫХ ПОИСКОВЫХ РОБОТОВ»

МАТЕМАТИКА, ИНФОРМАТИКА И ИНЖЕНЕРИЯ

УДК 004.9

Аладин Д. В. студент

факультет "Информатика и системы управления "

Афанасьев Г.И., к.т.н.

доцент

кафедра «Системы обработки информации и управления» Московский государственный технический университет им. Н.Э. Баумана Россия, г. Москва АНАЛИЗ СОВРЕМЕННЫХ ПОИСКОВЫХ РОБОТОВ

Аннотация:

Данная статья посвящена аналитическому обзору современных поисковых роботов. Приведены общие правила и принципы построения поисковых агентов. Рассмотрены варианты применения поисковых роботов. Помимо этого, представлены примеры передовых Open Source проектов поисковых агентов.

Ключевые слова: поисковая система, поисковый агент, поисковый робот, поисковый паук, поисковый скребок.

Aladin D. V. student

Faculty of Computer Science and Control Systems Bauman Moscow State Technical University

Russia, Moscow Afanasyev G.I., Ph.D.

Assistant Professor, Department of Automatic Information Processing

and Control Systems Bauman Moscow State Technical University

Russia, Moscow ANALYSIS OF MODERN SEARCH ROBOTS

Abstract:

This article reviews contemporary search robots. It is spoken in detail about general rules and principles of search agents. Examples of practical applications of search engines are given. In addition, the leading projects of the Open Source community are considered.

Keywords: search engine, search agent, search robot, web spider, web scraper.

Введение

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

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

Поисковый робот - программа, исследующая определенным образом и с определенной целью пространство Интернета. Данные продукты входят в состав поисковых систем, таких, как «Яндекс.Поиск», «Google» и «Bing». Они, в свою очередь, предоставляют обычному пользователю эффективный поиск информации на сайтах Интернета.

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

В данной статье рассмотрены основные виды поисковых агентов, а также продукты, используемые для направленного извлечения данных из Интернет-ресурсов.

Устройство поисковых машин

Поисковая система - это система, программно-аппаратный комплекс которой предназначен для поиска информации. Условно такие системы можно разделить на четыре больших класса [1]:

- Системы, использующие поисковых роботов;

- Системы, управляемые человеком;

- Гибридные системы;

- Мета-системы.

В повседневном использовании Интернета пользователь часто сталкивается с системами на поисковых роботах таких компаний, как Google, Bing и Yandex. Данные продукты также называют поисковыми машинами.

Устройство поисковых машин можно рассматривать следующим образом [2]:

- Spider (паук или спайдер) - программа, скачивающая страницы из Интернета для последующего анализа и запоминания в базу данных.

- Crawler (краулер, паук-путешественник) - программа, которая ищет полезные ссылки на странице ресурса и осуществляет переход по ним. Логика обхода страниц определяется алгоритмами информационного поиска.

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

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

- Search engine results (система выдачи результатов) - система, предназначенная для извлечения необходимых данных из каталога по запросу пользователя.

- Web server (веб-сервер) - веб-сервер, связывающий конечного пользователя с поисковой системой.

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

Поисковый агенты пишутся на языках высокого уровня. Это позволяет им эмулировать поведение обычных браузеров или решать специализированные задачи: использование сетевого протокола передачи новостей NNTP, получение электронной почты по SMTP или чтение лент новостей из RSS.

В поисковых системах Яндекс и Google можно выделить похожие по функциям роботов [3]:

1. Робот-индексатор:

а. Страниц для web-браузера десктопа.

б. Страниц для web-браузера смартфона.

2. Робот по изображениям.

3. Робот по видео.

4. Робот по новостям.

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

Робот-индексаторы бывают основными и быстрыми. Основной робот занимается индексированием нового контента, быстрый - обновляет индекс часто меняющихся страниц.

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

Разработчики сайтов управляют областью индексирования их ресурсов с помощью файлов robots.txt или sitemap.xml. Также на самих веб-страницах для оптимизации процесса индексирования используются мета-теги, теги и атрибуты noindex и nofollow.

На данный момент поисковые роботы умеют индексировать не только веб-страницы, но и офисные документы, например, файлы, созданные в пакетах MS Office и Open Office, документы формата PDF, RTF и TXT.

Робот по изображениям заносит в индекс графическую информацию. Сервисы «Яндекс.Картинки» и «Google Картинки» предоставляют возможность поиска изображения по заданному образцу.

Робот по видео индексирует видеоролики.

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

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

Корпоративные и специализированные поисковые роботы

Также, как и паук поисковой системы, корпоративный паук занимается индексированием контента [4]. Однако областью интереса таких программ является внутренние ресурсы компании, доступные только ее сотрудникам. В этом случае действия паука ограничены локальной средой. В основе данных систем могут лежать платформы Apache Lucene, Apache Solr и Sphinx.

Ограничение локальной средой применимо не только для корпоративных роботов. Давно реализовываются поисковые модули для индексирования данных пользователя компьютера или смартфона. В качестве примеров могут служить программы Beagle, разработанная Beagle Team, Spotlight от компании Apple и решения для персональных компьютеров от компаний Google и Яндекс.

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

Поисковый скребок

Web scraper («Web-скребок») - это разновидность поискового робота, которая предназначена для работы с определенным Интернет-контентом. Деятельность данных роботов может быть обширна: выявление стоимости продуктов или услуг, выгрузка прайс-листов конкурентов, слежение за показателями открытых источников и т.д.

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

Общие принципы работы поисковых скребков

Принцип выгрузки веб-страниц поисковыми скребками условно можно представить в таком виде [5]:

- Загрузить всю html-страницу целиком;

- C помощью заранее заданных областей сканирования (css-стили или html-блоки) обнаружить данные для сохранения;

- Выгрузить выбранные данные в специальную базу данных;

- Продолжить «путешествие» по следующим страницам.

Далее рассмотрим три продукта, являющиеся представителями Web

scraper: Scarpy, Ggrablib и Pyspider.

Scarpy - простой, быстрый, расширяемый

Scarpy - продукт с исходным кодом для извлечения структурированных данных из веб-сайтов, которые могут использоваться для широкого круга прикладных задач, таких, как интеллектуальный анализ данных, обработка или для формирования исторических архивов. Он полностью написан на языке Python.

Первоначально разрабатывался для индексирования web-страниц. На данный момент находит применение при извлечении данных с помощью API-интерфейсов или в реализации поисковых роботов общего назначения (такие, как в поисковых системах).

Данный продукт предоставляет мощный функционал:

- Поддержка css-селекторов для анализа данных;

- Встроенная поддержка прокси, переадресация, проверка подлинности, cookie и др;

- Генерации различных каналов экспорта данных, такие как CSV, JSON и XML;

- Поддержка различных кодировок.

Также стоит отметить, что Scarpy хорошо задокументирован, имеет много расширений и активно поддерживается Open Source сообществом.

Архитектура Scarpy представлена таким образом [6]:

- Scrapy Engine (движок Scarpy) - компонент, отвечающий за управление потоком между всеми элементами системы.

- Scheduler (планировщик) - отвечает за формирование очереди из запросов от Engine и её выдачу по запросу.

- Downloader (загрузчик) - загрузчики, выгружающие вебстраницы по заданию Engine и возвращающие их ему же.

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

- Item Pipeline (конвейер элементов) - предназначен для очищения, подтверждения и сохранения полученных данных от Spiders и их выгрузку в базу данных.

- Spider middlewares (промежуточные пауки) - промежуточные пауки, которые расположены между Scrapy Engine и Downloader, позволяющие формировать логику действий при получении запросов от Scrapy Engine и обрабатывать ответы от Downloader.

GrabLib - основа для создания поисковых роботов

GrabLib - это платформа для создания поисковых агентов на Python. С помощью неё можно строить поисковые машины любой сложностью: от простых скриптов до сложных асинхронных веб-сайтов обработки миллионов веб-страниц. GrabLib предоставляет API для выполнения сетевых запросов и обработки полученного контента, например, взаимодействие с

DOM-деревом HTML-документа.

Библиотека Grab состоит из двух частей [7]:

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

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

Pyspider - мощный паук из коробки

Pyspider - еще один представитель поисковых систем, написанных на Python. Отличительной особенностью является то, что он обладает мощным WebUI с редактором скриптов, мониторингом задач, менеджером проектов и компонентом просмотра результатов. К дополнению этому доступны средства управления задачами, приоритетами и расписанием сканирования. В системе также доступно взаимодействие с различными базами данными. Ко всему этому Pyspider позволяет экспортировать результаты работы в CSV и JSON.

Структура Pyspider включает в себя [8]:

- Scheduler (планировщик) - управляет процессом выполнения задач, полученных от Processor. Принимает решение о необходимости нового или повторного обхода страниц и заботится о периодически выполняемых задачах и за перезапуском приостановившихся процессов.

- Fetcher (сборщик) - отвечает за получение веб-страниц, а затем отправляет результаты в Processor. Сборщик поддерживает множество настроек, что делает процесс загрузки страниц гибким и управляемым.

- Phantomjs Fetcher - работает как прокси-сервер. Он подключен к Fetcher и необходим для загрузки и отображения страниц с JavaScript.

- Processor (процессор) - отвечает за выполнение скриптов, написанных пользователем, анализ и извлечение информации. Процессор перехватывает возникающие исключения и ведет журнал, управляет статусами текущих задач и добавлением новых в Scheduler и отправляет результаты работы в Result Worker.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

- Result Worker (экспортер результатов) - позволяет выгружать полученные после обработки веб-страниц результаты во встроенную или внешнюю базу данных.

- WebUI (графический интерфейс) - возможно, самая привлекательная часть Pyspider. С помощью интерфейса можно шаг за шагом проводить настройку и отладку скриптов, управлять проектами, осуществлять мониторинг задач и изучать результаты работы паука.

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

Заключение

Анализ современных поисковых роботов показывает, что их структура зависит от целей и задач, поставленных перед программистами. В связи с ростом объема сети Интернет постоянно изменяются требования к поисковым платформам. Благодаря Open Source сообществу, каждый заинтересованный разработчик может создать собственный поисковый робот и направить его на сбор необходимой информации.

Использованные источники:

1. Сегалович И. Как работают поисковые системы. [Электронный ресурс]. URL: http://download.yandex.ru/company/iworld-3.pdf (дата обращения 25.03.2017).

2. Курс продвижения сайтов: работа поисковых систем. [Электронный ресурс]. URL: http://denweb.ru/seo/osnovy-prodvizheniya-saitov-rabota-poiskovyx-sistem.html (дата обращения 25.03.2017).

3. Процессы поисковых систем. [Электронный ресурс]. URL: http://www.sembook.ru/book/poiskovye sistemy/protsessy-poiskovykh-sistem/ (дата обращения 25.03.2017).

4. M. Тим Джонс. Создание "Web-пауков" в Linux. [Электронный ресурс]. URL: https://www.ibm.com/developerworks/ru/library/l-spider/?S TACT=105AGX99&S CMP=CP (дата обращения 25.03.2017).

5. Дэвид Мерц. Очаровательный Python: Собираем данные в Web с помощью mechanize и Beautiful Soup. [Электронный ресурс]. URL: https://www.ibm.com/developerworks/ru/library/l-python-mechanize-beautiful-soup/index.html (дата обращения 25.03.2017).

6. Scrapy. Architecture overview. [Электронный ресурс]. URL: https://doc.scrapy.org/en/master/topics/architecture.html (дата обращения 25.03.2017).

7. Grab - фреймворк для парсинга сайтов. [Электронный ресурс]. URL: http://docs.grablib.org/ru/latest/ (дата обращения 25.03.2017).

8. Pyspider. Architecture. [Электронный ресурс]. URL: http://docs.pyspider.org/en/latest/Architecture/ (дата обращения 25.03.2017).

i Надоели баннеры? Вы всегда можете отключить рекламу.