О веб-краулерах

Spider

Веб-краулер (другие названия: паук, скрапер, бот, веб-робот) 1 — это программа, которая добывает данные через Веб. Она не делает ничего такого, чего не сделаешь вручную, через браузер. Это всего лишь способ автоматизации, экономия человеческих сил и времени.

Простейший пример.

Я периодически посещаю сайт http://it-ebooks.info/, где собраны электронные книги, и раз за разом выполняю одни и те же действия:

  1. Открываю главную страницу.
  2. Перехожу к секции "Последние загруженные книги".
  3. Просматриваю список новых поступлений.
  4. Увидев интересный заголовок — например, со словами "Python" или "Perl",-- открываю ссылку.
  5. Читаю описание и если оно показалось интересным, кликаю на ссылке "Download", чтобы загрузить PDF.

Не бог весть какие сложные действия, и отнимают не больше 10 минут. Но 10 минут ежедневно — это 5 часов в месяц. Почему бы не написать программу, которая делает то же самое вместо меня по расписанию? Результатом ее работы мог бы быть текст с описаниями новинок.

...А что, если необходимо просмотреть сотни отзывов о книге? Тысячи отзывов о той или иной услуге? Десятки тысяч? Для этого пришлось бы уговорить десяток человек выполнять рутинную работу в течение многих дней. Тут уже без автоматизации не обойтись.

Без краулера не обходится ни одна поисковая система, начиная с Гугла и заканчивая самым захудалым стартапом. Поисковые роботы, как их обычно называют, обходят Интернет, добывая "сырье" для поисковика. Чем эффективнее трудится поисковый робот, тем актуальнее результаты поиска.

Правила вежливости

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

Серия правил может относиться ко всем без исключениям краулерам или же к какому-то определенному. Так, открыв http://yandex.ru/robots.txt, мы видим:

User-agent: *
...
Disallow: /about.html
...
Disallow: /images/*
Allow: /images/$    

User-Agent: Twitterbot
Allow: /images

Это означает, что:

Вежливый краулер обязан представиться (например: "bingbot/2.0"), а кроме того в заголовке запроса указать реквизиты 2, позволяющие веб-мастеру узнать, с какой целью бот создан и при необходимости связаться с владельцем 3.

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

Между тем, уже несколько лет назад программы "отъедали" более половины всего веб-траффика 4. Соотношение присутствия людей и роботов ежегодно меняется в пользу последних.

Маскировка

Какие бы цели ни преследовал владелец бота, его часто не устраивают ограничения. Предположим, мы хотим собрать подробные сведения о 10 тысячах популярных фильмов с сайта http://kinopoisk.ru. Навскидку, для каждого фильма надо выполнить около десяти запросов:

  1. Открыть страницу фильма и считать основные сведения.
  2. Оттуда пройти по подразделам: "Премьеры", "Кадры", "Студии", "Связи", "Награды" и т.д.
  3. Если подраздел разбит на страницы, пройти каждую страницу.

Нетрудно подсчитать, что выдерживая паузы в 10 секунд, мы обойдем нужные страницы за 11 суток, не меньше. А ведь, 10 000 объектов — капля в море, если наша цель, например — машинное обучение или поиск. Вот и приходится разработчикам маскировать краулеры под людей. Такой краулер в заголовке запроса представится как браузер: Firefox, Explorer и т.п. Владельцу сайта потребуется более-менее сложная эвристика, чтобы распознать "чужого".

Следует ли осуждать такую практику? Думаю, все зависит от целей того, кто собирает данные. Спаммеры при помощи ботов извлекают из веб-страниц Email-адреса 5 — за такое, безусловно, надо отрывать руки. Есть организации, которые сканируют веб на предмет нарушения авторских прав — не вижу в этом ничего плохого. Кстати, давно заметил, что особенно рьяно защищаются от пауков сайты, где публикуется сомнительный или заимствованный контент 6. Наконец, если вместе с крупицами ценного текста мне навязывают тонну раздражающей рекламы, почему бы не прибегнуть к программе, которая избавит меня от мусора?

Как я уже говорил, все, что делает краулер, можно сделать и руками (тот же сбор Email-адресов). Программа — всего лишь инструмент. Ее наличие или отсутствие не меняет ни моральную ни юридическую сторону вопроса.


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

  2. E-mail владельца и адрес сайта. 

  3. Например: Робот Googlebot 

  4. См. http://www.incapsula.com/blog/bot-traffic-report-2013.html 

  5. Такие боты называются "харвестерами" (harvesters) — "сборщиками урожая". 

  6. Попробуйте зайти краулером на какой-нибудь желтый форум рунета. 

social

Яндекс.Метрика