Vessel — мощный инструмент для сбора данных

3 декабря 2020, 12:38
0

Vessel — мощный инструмент для сбора данных

Нередко один инструмент используется как строительный материал для других проектов. Так на основе веб-драйвера Ferrum разработали поисковый фреймворк Vessel. Рассказываем, для чего он используется/
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 покажут, насколько это быстрое и функциональное решение. 

Ответить?
Введите капчу

✉️✨
Письма Коссы — лаконичная рассылка для тех, кто ценит своё время: cossa.pulse.is