Боевой краулер или современный вариант сухопутного крейсера Р-1000 Ratte.

Бумажный кораблик

Существуют готовые продукты, способные выдерживать промышленные нагрузки и снабжать данными поисковые системы. Например, Nutch — краулер, использующийся с открытой поисковой системой Lucene. Однако изучать такие системы — все равно что получать новую специальность и использовать их для относительно скромных задач — стрельба из пушки по воробьям.С другой стороны, современные языки программирования предоставляют готовые библиотеки, позволяющие свести задачу скачивания документа к одной строчке кода. Например, на Питоне:Это работает и выглядит весьма заманчиво. Можно даже, следуя примеру из книги Т.Сегарана «Программируем коллективный разум» («Символ-плюс», 2008), написать «обертку» вокруг этой строчки, которая позволит идти вглубь и вширь, по ссылкам, добытых с каждой загружаемой страницы. Если запустить такой краулер на ночь, то к утру вас могут ожидать один или несколько неприятных сюрпризов из серии:

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

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

  1. Компактность. Очень не хочется городить очередной фреймворк, который к концу проекта будет провисать под собственным весом. Достаточно того, что urllib2 — скорее не библиотека, а Java-образный фреймворк.
  2. Вежливость. Вежливыми принято называть краулеры, лояльные к ‘robots.txt’. Так называется специальный файл, где веб-мастера объявляют правила поведения пауков на сайте. Скажем: таком-то краулеру не ходить в раздел ‘/news’, никому не ходить в /weather/… Пример можно увидеть прямо через браузер: http://tv.yandex.ru/robots.txt .

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

Что это значит?

В сравнении с предыдущей версией робота, обновлённый Googlebot поддерживает более 1 000 новых функций. Например:

  • ES6 (последний языковый стандарт JS) и свежий функционал JavaScript.

  • IntersectionObserver for lazy-loading (подгрузка контента при скролле).

  • API для веб-компонентов v1 (Web Components — удобная технология для упрощения и ускорения разработки веб-документов).

Всё эти новшества позволят Googlebot индексировать больше контента, а разработчикам наконец отказаться от использования полифиллов (библиотеки для поддержки новых JS-возможностей в старых браузерах) и транспайлеров (тип компиляции), при условии, что они внедрялись специально для краулера Googlebot.

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

Google рекомендует проверять страницы на наличие возможных JS-ошибок и по возможности подробнее изучить вопрос. Вот, например, советы по ускорению страниц, в том числе с помощью минимизации JS и CSS: https://tools.pixelplus.ru/news/speed-up-your-site.

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий