Сетевые краулеры

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

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

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

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

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

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

Вопрос выбора языка и фреймворка, которые будут использоваться для создания бота, не имеет большого значения, главное не изобретать колесо. Если имеющийся инструмент прост и удобен в использовании лучше использовать его. Если же такого инструмента нет, то для разработки можно воспользоваться например Perl, Python, C++ или др. У каждого из средств разработки есть свои плюсы и минусы (простота использования, наглядный синтаксис, эффективность, легкость адаптации под задачи бизнеса и т.п.) 

В процессе разработки и использования бота как правило приходится столкнуться со следующими проблемами: 

  • Многие сайты используют различные политики доступа к своему контенту и администратор может с целью снижения нагрузки заблокировать адрес вашего бота, с целью избежания такой проблемы нужно уметь анализировать robots.txt и подстраиваться под его требования, учитывая допустимые квоты запросов 

  • В случае, когда краулер работает на одной машине то проблем управления пулом адресов не возникает (легко удалить дубликаты, весь пул можно держать в памяти), если же имеет место распределенная система, тогда возникает вопрос размещения пула и доступа к нему 

  • В процессе разбора HTML страниц всегда будут встречаться нестандартные разметки 

  • Анализ медиа данных (видео, pdf, изображений и т.д) 

  • Необходимость уметь ранжировать данные по рейтингам доменов 

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

  • Определение глубины перехода по ссылкам 

В ряде случаев можно воспользоваться одним из готовых решений: 

  • Apache Nutch и Heritrix (Java) 

  • Scrapy (Python) 

  • Node.io (JavaScript)  

  • httrack и др. 

Тэги: data mining text mining боты краулеры


 


 
архив

подписка