Краулер что это такое
Краулер
Поиско́вый ро́бот («веб-пау́к», краулер) — программа, являющаяся составной частью поисковой системы и предназначенная для обхода страниц Интернета с целью занесения информации о них в базу данных поисковика. По принципу действия паук напоминает обычный браузер. Он анализирует содержимое страницы, сохраняет его в некотором специальном виде на сервере поисковой машины, которой принадлежит, и отправляется по ссылкам на следующие страницы. Владельцы поисковых машин нередко ограничивают глубину проникновения паука внутрь сайта и максимальный размер сканируемого текста, поэтому чересчур большие сайты могут оказаться не полностью проиндексированными поисковой машиной. Кроме обычных пауков, существуют так называемые «дятлы» — роботы, которые «простукивают» проиндексированный сайт, чтобы определить, что он доступен.
Порядок обхода страниц, частота визитов, защита от зацикливания, а также критерии выделения значимой информации определяются поисковыми алгоритмами.
В большинстве случаев переход от одной страницы к другой осуществляется по ссылкам, содержащимся на первой и последующих страницах.
Также многие поисковые системы предоставляют пользователю возможность самостоятельно добавить сайт в очередь для индексирования. Обычно это существенно ускоряет индексирование сайта, а в случаях, когда никакие внешние ссылки не ведут на сайт, вообще оказывается единственной возможностью указать на его существование.
Ограничить индексацию сайта можно с помощью файла
Краулер: что это такое, фото, описание, для чего применяется
В соревновании с английским языком, выполняющим роль современной латыни, русский теряет позицию за позицией. Технические, медицинские, спортивные термины все чаще приходят к нам из-за океана. Один из таких заморских гостей – «краулер». Что это такое, вряд ли можно ответить без обращения к интернет-разуму. Чем мы и займемся.
Машины из вселенной Дюны
Впервые техническое приспособление под названием «sand crawler» появилось на кончике пера одного из отцов научной фантастики XX века Фрэнка Герберта. В его культовом романе «Дюна» устройство предназначалось для добычи меланжа (пряности) – изысканного наркотика, которого потребляла вся развитая цивилизация.
Среди характерных черт механизма:
Песчаный краулер
Гениальное творение Фрэнка Герберта повлияло на целый пласт американской и мировой культуры. Без него не было бы феномена «Звездных войн». Действительно, Джордж Лукас немало позаимствовал у своего богатого на фантазию соотечественника. Это касается, в частности, транспортных средств под названием «crawler»:
Поисковый робот – краулер
В сфере поисковых технологий краулером называют робота, предназначение которого сводится к автоматическому занесению информации в индекс. Функциональность такой программы включает в себя:
Веб-разработчики могут изменить поведение робота, прописав необходимые строки в файле robots.txt. Таким образом можно установить хронологические рамки для обращений и «черный список» страниц, которые не следует индексировать.
Багги для покорения скал
Среди наиболее распространенных сфер применения таких авто:
Как сделать краулер своими руками?
Лавры троицы из «Топ гира», покорявшей на багги просторы африканской пустыни, не дают покоя многим любителям приключений. Ведь никто не откажется от удовольствия прокатиться на рок-краулере, который способен покорить не только пустыню, но и горы.
Сделать его можно самому при наличии навыков ремонта автомобилей и специального оборудования:
Видео о чемпионате краулеров во Франции
В данном ролике будет показано состязание горных краулеров, проводимое ежегодно во Франции:
Обзор небольшого радиоуправляемого краулера HBX Devastator в масштабе 1/24: полный привод, четыре управляемых колеса (4WS) и отличная проходимость.
Вначале, наверное, стоит пояснить, что такое «краулер».
Краулеры или по-английски «Rock Crawler» — особые машины со специальным изгибающимся шасси, позволяющим им преодолевать невероятные препятствия. Это медленные машины для лазанья по огромным камням. Характеризуется огромным клиренсом, таким же огромным ходом подвески, низкой скоростью.
Данный класс машин предназначен исключительно для аккуратного и неторопливого преодоления препятствий.
Поставляется машинка вот в такой, достаточно большой коробке. Как видно, все тяготы доставки коробка перенесла довольно хорошо, т.к. практически невидно никакой деформации.
Комплект поставки – машинка, пульт управления, зарядное устройство, инструкция и комплект дополнительных наклеек на корку машинки
Инструкция на английском языке, достаточно подробно составлена и иллюстрирована
Зарядка сразу европейского типа, переходник не нужен. Предназначена для подключения к специальному гнезду в машинке, согласно информации на наклейке, выдает 600 мА при токе в 7.2 вольта.
На устройстве предусмотрена индикация состояния – во время зарядки светодиод горит красным цветом, после окончания цвет меняется на зеленый
Пульт управления не имеет внешней антенны, работает на частоте 2.4GHz
Питается от 3 элементов типа АА
«Рулевое» колесо пульта полностью пластиковое, т.е. на нем нет специальной резиновой или поролоновой «шины» для удобства управления
Органы управления на пульте, если смотреть снизу-вверх, расположены следующим образом:
— включение/выключение питания;
— светодиоды индикаторов питания и наличия соединения
— кнопка переключения режимов управления колесами (короткое нажатие), биндинг (долгое нажатие);
— переключатели реверсов вперед/назад и право/лево;
— триммеры сервмашинок и регулятора хода;
— индикаторы режима управления колесами.
Ну а теперь рассмотрим саму машинку
Машинка имеет довольно компактные размеры, всего 19.00 x 12.50 x 10.50 см
Чтобы стало совсем понятно — фото со спичечным коробком ))
Как уже упоминалось выше, машинка имеет постоянный полный привод, амортизаторы, судя по всему, не масляные, очень мягкие
Под коркой прячется рама из алюминиевого сплава, на которую установлены все узлы и агрегаты машинки
Рама собрана из нескольких пластин. Соединены между собой винтами через специальные проставки.
Колеса с резиновыми покрышками, внутри, судя по всему, ничего кроме воздуха нет
Корка плотно крепится при помощи четырех металлических клипс
Вся электроника, включая аккумулятор, собрана в один блок
Включатель машинки расположен рядом с гнездом для зарядки
Ход подвески мягкий и довольно большой
Поскольку класс машинки подразумевает преодоление препятствий, вся конструкция рассчитана на максимальное сопротивление опрокидыванию и позволяет выполнять вот такие интересные «скручивания»
Все, а не только передние, колеса машинки являются управляемыми. Режимы переключаются на пульте. Вот так выглядят все возможные варианты поворота колес
Заряженного аккумулятора хватает примерно на 30-40 минут в зависимости от интенсивности заезда, время зарядки составляет примерно 40-50 минут. Максимальная скорость машинки сравнима с неспешной прогулкой человека, поэтому для гоночных соревнований она совсем не подходит (правда на это и не рассчитано)
На этом мини-краулере можно кататься по дому, устраивая трассы из домашней утвари и разных коробок, а если выбраться на улицу, то благодаря небольшим размерам машинки, для нее любая ямка или кочка превращается в большое препятствие
Небольшое видео покатушек
Если вы не поклонник огромных скоростей и вам больше по духу спокойная, обдуманная езда то эта машинка обязательно должная понравится, тем более что для того, чтобы гонять на ней, совершенно не обязательно искать какие-либо большие открытые места, полигон для покатушек совершенно легко можно устроить хоть в небольшой комнате, хоть в песочнице или на детской площадке – этому маленькому «проходимцу» везде найдется препятствие, которое он будет с гордостью преодолевать…
Пишем краулер на раз-два 1.0
Веб-краулер (или веб-паук) — это важная составная часть поисковых систем для обхода веб-страниц с целью занесения информации о них в базы данных, в основном, для их дальнейшей индексации. Такая штука есть у поисковиков (Google, Yandex, Bing), а также у SEO-продуктов (SEMrush, MOZ, ahrefs) и не только. И штука эта — довольно интересная: как в плане потенциала и вариантов использования, так и для технической реализации.
Этой статьей мы начнем итеративно создавать свой велосипед краулер, разбирая многие особенности и встречая подводные камни. От простой рекурсивной функции до масштабируемого и расширяемого сервиса. Должно быть интересно!
Интро
Итеративно — значит в конце каждого выпуска ожидается готовая к использованию версия «продукта» с условленными ограничениями, характеристиками и интерфейсом.
В качестве платформы и языка выбраны node.js и JavaScript, потому что это просто и асинхронно. Конечно, для промышленной разработки выбор технологической базы должен опираться на бизнес-требования, ожидания и ресурсы. В качестве же демонстрации и прототипа эта платформа — вполне ничего (имхо).
Это мой краулер. Таких краулеров много, но этот — мой.
Мой краулер — мой лучший друг.
Реализация краулера — довольно популярная задача и встречается даже на технических собеседованиях. Готовых (Apache Nutch) и самописных решений для разных условий и на множестве языков — действительно много. Поэтому, любые комментарии из личного опыта разработки или использования приветствуются и будут интересны.
Постановка задачи
Задание для первой (начальной) реализации нашего тяп-ляп краулера будет следующим:
Краулер на раз-два 1.0
Написать краулер-скрипт, который обходит внутренние ссылки некоторого небольшого (до 100 страниц) сайта. В качестве результата предоставить список URL’ов страниц с полученными кодами и карту их перелинковки. Правила robots.txt и атрибут ссылки rel=nofollow игнорировать.
Внимание! Игнорировать правила robots.txt — плохая идея по понятным причинам. Мы наверстаем это упущение в дальнейшем. А пока, добавим ограничивающий количество обходимых страниц параметр limit, чтобы останавливаться и не DoS’ить подопытный сайт (лучше и вовсе для экспериментов использовать какой-нибудь свой персональный «сайт-хомячок»).
Реализация
Для нетерпеливых вот исходники этого решения.
1. HTTP(S)-клиент
Первое, что нам нужно уметь делать — это, собственно, отправлять запросы и получать ответы по HTTP и HTTPS. В node.js для этого есть два соответствующих клиента. Конечно, можно взять готовый клиент request, но для нашей задачи он крайне избыточен: нам всего лишь надо отправить GET-запрос и получить response с телом и заголовками.
Необходимый нам API обоих клиентов идентичен, заведем мапу:
Объявим простую функцию fetch, единственным параметром которой будет абсолютный URL нужного веб-ресурса строкой. С помощью утильного модуля url будем парсить полученную строку в объект URL. В этом объекте имеется поле с протоколом (с двоеточием), по которому мы выберем подходящий клиент:
Далее используем выбранный клиент и обернем результат функции fetch в промис:
Теперь мы умеем асинхронно получать response, но пока ничего с ним не делаем.
2. Варианты ответа
Для обхода сайта достаточно обрабатывать 3 варианта ответа:
Реализация стратегии формирования результата в лучших традициях if-else:
Функция fetch готова к использованию: код функции целиком.
3. Экстрагирование ссылок
Теперь в зависимости от варианта полученного ответа нужно уметь экстрагировать из данных результата fetch ссылки для дальнейшего обхода. Для этого определим функцию extract, принимающую на вход объект результата и возвращающую массив новых ссылок.
Если тип результата — REDIRECT, то функция вернет массив с одной единственной ссылкой из поля location. Если NO_DATA, то пустой массив. Если же OK, то нам необходимо подключить парсер для представленного текстового content для поиска.
Для задачи поиска можно написать и регулярное выражение. Но это решение совершенно не масштабируется, так как в дальнейшем мы как минимум будем обращать внимание на прочие атрибуты (rel) ссылки, как максимум — подумаем про img, link, script, audio/video (source) и прочие ресурсы. Гораздо перспективнее и удобнее парсить текст документа и строить дерево его узлов для обхода привычными селекторами.
Воспользуемся популярной библиотекой JSDOM для работы с DOM в node.js:
Достаем из документа все A элементы, а затем все отфильтрованные значения атрибута href, как не пустые строки.
4. Подготовка и фильтрация ссылок
В результате работы экстрактора мы имеем набор ссылок (URL) и две проблемы: 1) URL может быть относительным и 2) URL может вести на внешний ресурс (нам нужны сейчас только внутренние).
С первой проблемой нам поможет справиться функция url.resolve, которая резолвит URL целевой страницы относительно URL страницы-источника.
Чтобы решить вторую проблему, напишем простую утильную функцию inScope, которая проверяет хост целевой страницы относительно хоста базового URL текущего краула:
Функция осуществляет поиск подстроки (baseHost) с проверкой предыдущего символа, если подстрока была найдена: так как wwwexample.com и example.com — разные домены. В результаты мы не покидаем заданный домен, но обходим его поддомены.
Доработаем функцию extract, добавив «абсолютизацию» и фильтрацию полученных ссылок:
Здесь fetched — полученный результат от функции fetch, src — URL страницы-источника, base — базовый URL краула. На выходе мы получаем список уже абсолютных внутренних ссылок (URL) для дальнейшей обработки. Код функции целиком можно увидеть здесь.
5. Нормализация URL
Повторно встретив какой-либо URL, не нужно отправлять еще запрос за ресурсом, так как данные уже были получены (или другое соединение еще открыто и ожидает ответа). Но не всегда достаточно сравнить строки двух URL, чтобы это понять. Нормализация — это процедура, необходимая для определения эквивалентности синтаксически различных URL-адресов.
Процесс нормализации — это целый набор преобразований, применяемых к исходному URL и его компонентам. Вот только некоторые из них:
Да, здесь нет сортировки query-параметров, игнорирования utm-меток, обработки _escaped_fragment_ и прочего, чего нам (пока) совершенно не нужно.
Далее заведем локальный кэш запрошенных в рамках краула нормализованных URL. Перед отправкой очередного запроса нормализуем полученный URL, и, если тот отсутствует в кэше, добавим и только тогда отправим новый запрос.
6. Алгоритм работы main-функции
Ключевые компоненты (примитивы) решения уже готовы, пришло время начать собирать все вместе. Для начала определимся с сигнатурой функции crawl: на входе — стартовый URL и ограничение по страницам. Функция возвращает промис, резолв которого предоставляет аккумулированный результат; запишем его в файл output:
Простейшая схема рекурсивной работы функции краула может быть описана шагами:
1. Инициализация кэша и объекта результата
2. ЕСЛИ URL целевой страницы (через normalize) отсутствует в кэше, ТО
— 2.1. ЕСЛИ достигнут limit, ТО КОНЕЦ (ждать результат)
— 2.2. Добавить URL в кэш
— 2.3. Сохранить ссылку между источником и целевой страницей в результат
— 2.4. Отправить асинхронный запрос за страницей (fetch)
— 2.5. ЕСЛИ запрос выполнился успешно, ТО
— — 2.5.1. Экстрагировать новые ссылки из результата (extract)
— — 2.5.2. Для каждой новой ссылки выполнить алгоритм 2-3
— 2.6. ИНАЧЕ пометить страницу состоянием ошибки
— 2.7. Сохранить данные о странице в результат
— 2.8. ЕСЛИ это была последняя страница, ТО ВЕРНУТЬ результат
3. ИНАЧЕ сохранить ссылку между источником и целевой страницей в результат
Да, этот алгоритм будет претерпевать серьезные изменения в дальнейшем. Сейчас же умышленно используется рекурсивное решение в лоб, чтобы позже лучше «прочувствовать» разницу в реализациях. Заготовка для имплементации функции выглядит так:
Достижение лимита страниц проверяется простым счетчиком запросов. Второй счетчик — количество активных запросов в момент времени — послужит проверкой готовности отдать результат (когда значение оборачивается в ноль). Если функции fetch не удалось получить очередную страницу, то для нее Status Code выставим как null.
С кодом имплементации можно (не обязательно) ознакомиться здесь, но перед этим стоит рассмотреть формат возвращаемого результата.
7. Возвращаемый результат
Введем уникальный идентификатор id с простым инкрементом для опрошенных страниц:
Для результата заведем массив pages, в который будем складывать объекты с данными по странице: id
Для информативности перед резолвом результата отсортируем список страниц по возрастанию id (ведь ответы будут приходить в каком-угодно порядке), дополним результат числом просканированных страниц count и флагом о достижении заданного лимита fin:
Пример использования
Готовый краулер-скрипт имеет следующий синопсис:
Дополнив логированием ключевых точек процесса, увидим такую картину при запуске:
А вот результат в формате JSON:
Что с этим уже можно делать? Как минимум, по списку страниц можно найти все битые страницы сайта. А имея информацию о внутренней перелинковке, можно обнаружить длинные цепочки (и замкнутые циклы) редиректов или найти наиболее важные страницы по ссылочной массе.
Анонс 2.0
У нас получился вариант простейшего консольного краулера, который обходит страницы одного сайта. Исходный код лежит здесь. Там же есть еще пример и юнит-тесты для некоторых функций.
Почему так популярны радиоуправляемые краулеры
Содержание
Содержание
Наверное, вы замечали в магазинах и отделах с радиоуправляемыми машинами модели, оснащенные подвеской с большим ходом и высоким клиренсом. Называются они краулерами (от английского «Rock Crawler» — «ползущий по скалам») Внешне они похожи на «монстр-траки», но имеют важное отличие — полностью независимая подвеска, обладающая большим ходом. Именно в ней и заключается главный интерес к краулерам, так как они без проблем преодолевают сложные заграждения.
Особенности краулеров
Краулер не подойдет тем, кто хочет порулить быстрой радиоуправляемой машиной. Эти игрушки неторопливые, с мощными двигателями и понижающими редукторами. Нужно это для того, чтобы пробираться там, где обычная радиоуправляемая модель, умеющая быстро разгоняться на ровной дороге, ехать не сможет вообще.
Не подойдет краулер и тем, кому нравятся копии каких-то известных и популярных машин. Точным воспроизведением внешнего вида настоящих транспортных средств производители и фанаты таких игрушек интересуются мало. Им больше интересна качественная подвеска. И вот почему.
Дело в том, что краулер — это радиоуправляемая машина для бездорожья. Конечно, не такого, как у настоящих джипов. В болото на ней не поедешь, хотя при наличии влагозащиты вполне реально использовать краулер в дождливую погоду или форсировать лужу приличных размеров, если вам захотелось особенно экстремальных впечатлений.
На краулере можно погонять не только по асфальту, это как раз неинтересно. Он проберется через кучу камней или песок, ему не помеха трава или крупная щебенка. Такая машинка заберется на бордюр и даже встанет вертикально, если попытаться ради интереса заехать на стену. Делает она все это неспешно — скорость у краулеров невысокая — но зато уверенно. Именно за эту возможность направлять машину куда угодно, краулеры и любят.
Достигается это необычной конструкцией шасси. Складывается такое ощущение, что машинки буквально цепляются за грунт своими колесами. Как так получается? Дело в том, что у краулера:
В результате краулер без проблем сохраняет устойчивость даже в том случае, если одно из колес угодило на возвышение (например, наехало на камень), а второе в это время провалилось в ямку. Игрушка без проблем справится с таким препятствием и неторопливо, но уверенно покатит дальше.
Краулер обязательно оснащен полным приводом, иначе он не сможет совершать свои акробатические подвиги. Обычно на краулеры ставят электродвигатели, соответственно, время использования ограничивается емкостью аккумулятора. Но зато машиной можно управлять очень точно и отзывчивость на команды у нее очень хорошая.
Разновидности краулеров
Все радиоуправляемые машины этого класса условно можно разделить на два типа — маленькие и большие. К первому относятся компактные машинки в масштабе 1:18 или 1:19 и даже совсем небольшие — 1:24. Ко второму — машины в масштабах 1:10, а также 1:12 и 1:14. Надо понимать, что для краулеров не идет речи о точном соблюдении размеров для соответствия с каким-то оригиналом. Тут главное — чтобы владелец мог от души повеселиться.
Понятно, что чем больше машинка, тем мощнее у нее подвеска и тем сложнее препятствия она сможет преодолеть. Казалось бы, в этом случае можно говорить и об увеличении времени автономной работы. Но чем машина больше, тем мощнее ей нужен двигатель, и заряд аккумулятора она станет тратить быстрее. Поэтому тут прямой зависимости нет, все зависит от конкретной модели, а точнее двигателя и емкости аккумуляторов. В среднем машины работают на одного заряде от 10 до 30 минут, после чего аккумулятор надо заряжать в течение 3-4 часов.
Ряд краулеров оснащается светодиодными фарами. При их наличии можно погонять в сумерках, они вполне способны осветить дорогу. Или просто использовать их для дополнительных световых эффектов. Разумеется, при этом время, которое ваш краулер сможет проехать на одном заряде аккумуляторов, уменьшится. Время работы таких машин от одного заряда при включенных фарах составляет 10-15 минут.
Интересный момент: некоторые модели краулеров имитируют грузовики. Можно перевозить небольшие грузы и, например, устраивать заезды на предмет того, у кого груз доедет в целости и сохранности.
Для чего используют краулеры
Для чего можно использовать радиоуправляемый краулер? Конечно, для развлечений. Для начала такую машинку можно запустить по грунту, песку и щебенке, попробовать забраться на большой камень, пробраться через песочницу, погонять по дорожкам в парке или на даче и заехать на бордюр рядом с тротуаром. Дома можно устроить полосу препятствий из подручных средств, например, из игрушек, и устраивать «покатушки», отрабатывая прохождение на скорость.
Следующий, более серьезный шаг — участие в соревнованиях радиоуправляемых машин или просто прохождение сложных трасс, специально созданных или подобранных на подходящей местности для того, чтобы проверить возможности краулеров в самых экстремальных для них условиях.
Создание или поиск полосы препятствий для таких машин зависит только от вашей фантазии. Так как подвеска краулеров позволяет проходить сложные препятствия, а сама машина ездит не очень быстро, то радиус поворота у нее небольшой и можно придумывать для нее и себя самые сложные задачи, а потом красиво из них выпутываться.
Соответственно краулер — машинка, которая так и просит, чтобы ее сфотографировали или сняли видео в каком-нибудь особенно интересном ракурсе. Например, как она штурмует какой-нибудь склон со сложным грунтом. Если речь идет о машинках в масштабе 1:10, можно сделать очень интересные снимки и ролики, в которых такая тачка будет смотреться «по-взрослому».
Краулеры с Wi-Fi и встроенными видеокамерами
Интересную возможность для эффектных заездов дают краулеры, оснащенные видеокамерой и модулем Wi-Fi. Во-первых, на такой машине можно не только гонять по песку и неровной дороге, но еще и снимать свои заезды, делая фотографии или записывая видеоролики с помощью мобильного приложения.
Для скачивания приложения производитель обычно указывает на упаковке QR-код со ссылкой. Как правило, доступны версии для iOS и Android. Требуется установить приложение на мобильное устройство, включить Wi-Fi на краулере и установить связь по беспроводной сети между машинкой и смартфоном.
Обычно мобильное приложение позволяет не только снимать фото и видео, но и управлять краулером со смартфона. При использовании такого способа управления пульт автоматически отключается.
Модернизация и тюнинг краулеров
Ещё одно важное и интересное направление, которым увлекаются владельцы краулеров — их тюнинг. Самое простое — замена аккумулятора на батарею большей емкости и улучшение влагозащиты.
Увлеченные пользователи на этом не останавливаются и перебирают ходовую часть, меняют шестеренки в редукторе на более прочные, а то и полностью меняют подвеску и радиоуправление на более продвинутое. В результате получается модель, в которой от первоначальной остается в лучшем случае внешний вид. Зато возможности, проходимость и надежность значительно улучшаются.