Vessel — мощный инструмент для сбора данных
Vessel — мощный поисковый фреймворк для автоматического сканирования и получения данных с веб-страниц, который работает на основе веб-драйвера Ferrum. Оба инструмента написаны на чистом Ruby и являются opensource-проектами.
Поисковый фреймворк, или веб-краулер, используется для сбора информации с веб-страниц. Например, чтобы в дальнейшем занести информацию в базу данных или проанализировать структуру сайта. Подобные инструменты применяются поисковиками, SEO-сервисами, скоринг-системами и другими программами, которые полагаются на данные из открытых источников.
Алгоритм работы
Давайте разберём работу фреймворка на примере:
Чтобы установить фреймворк, просто добавьте gem "vessel" в свой Gemfile.
Пропишите crawler class.
Создайте программного агента spider.rb, где необходимо будет прописать Spider class, производный от Vessel::Cargo.
Далее установите параметры сбора данных и callback-функции парсинга. Если вы не пропишете метод, Vessel::Cargo по умолчанию вызовет NotImplementedError.
В результате получаем такой код:
require "vessel" class Spider < Vessel::Cargo domain "blog.scrapinghub.com" start_urls "https://blog.scrapinghub.com" def parse css(".post-header>h2>a").each do |a| yield request(url: a.attribute(:href), method: :parse_article) end css("a.next-posts-link").each do |a| yield request(url: a.attribute(:href), method: :parse) end end def parse_article yield page.title end end Spider.run { |title| puts title }
Сперва Vessel запускает Ferrum-драйвер, который проходится по одной или нескольким страницам, указанным в start_urls. Когда страница со всеми данными загружена, начинается анализ.
Для выполнения прописанного запроса Vessel распараллеливает задачи на несколько потоков. Один поток используется на ядро, при желании можно изменить настройки и добавить threads max: n в определение класса.
Чтобы запустить краулер, используйте bundle exec ruby spider.rb.
Преимущества краулинга перед скрейпингом
Веб-скрейпинг и веб-краулинг — оба мощные и полезные инструменты. Однако поисковые фреймворки для краулинга страниц дают гораздо больше возможностей. Преимущества Vessel:
Фреймворк позволяет собирать данные не с отдельной страницы, а сразу со всего сайта. В start_urls также можно прописать сразу несколько веб-страниц.
Вы получаете полный контроль над тем, какие данные собирает Vessel на протяжении всего процесса.
Информацию вы получаете сразу в удобном формате, например CSV или JSON, что значительно упрощает её дальнейшее использование.
Интегрируя Vessel в проект, вы можете создать свой маленький Google: быстро и легко собирать, извлекать, систематизировать и индексировать данные. Варианты дальнейшего использования бесконечны.
Если вы хотите использовать возможности веб-краулера в своём проекте, напишите нам, разработчики Evrone покажут, насколько это быстрое и функциональное решение.