CoderCastrov logo
CoderCastrov
Руби

Парсинг с использованием Nokogiri в 7 шагах.

Парсинг с использованием Nokogiri в 7 шагах.
просмотров
3 мин чтение
#Руби

Это сложно.

Теперь, когда все люди, которые не готовы приложить усилия, ушли, оказалось, что это довольно легко освоить. Я хотел бы отметить, что это не исчерпывающее объяснение того, как работает Nokogiri и парсинг веб-страниц, но оно даст вам базовое представление о том, как начать.

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

Я создал CLI Ruby Data gem, чтобы вы могли следовать за мной или использовать его в качестве справочника. Моя цель была создать приложение для парсинга веб-сайта IMDB с топ-250 фильмами для получения выбранной информации и возможности адаптации к будущим изменениям.

Вот основная суть:


1. gem install nokogiri

Хорошо, перед этим вам нужно настроить правильную среду для использования Ruby, но я предполагаю, что вы уже сделали это. Перейдите в терминал и установите гем nokogiri, набрав gem install nokogiri, чтобы начать.

2. bundle gem "имя_файла"

После установки всех необходимых гемов пришло время создать ваш проект. Введите bundle gem имя_вашего_проекта, чтобы создать базовую структуру файлов для вашего проекта.

3. require всех файлов в environment.rb

По соглашению, вы должны создать папку config и добавить файл environment.rb, чтобы содержать все зависимости от других файлов в проекте. Вам также нужно подключить гемы nokogiri и open-uri здесь, чтобы все работало. Гем open-uri является частью библиотеки Ruby, поэтому нет необходимости устанавливать его в начале, потому что он уже должен быть у вас.

require_relative '../lib/version'
require_relative '../lib/cli'
require_relative '../lib/movie'
require "open-uri"
require 'pry'
require 'nokogiri'

4. Создание класса

Создайте новый файл Ruby для вашего класса объекта. В моем случае у меня есть три основных файла:

  • Файл cli.rb, который отвечает за весь пользовательский интерфейс в папке lib.
  • Файл movie.rb, который содержит все методы парсинга и attr_accessor для доступа и установки информации об экземплярах фильма, которые создаются.
  • Файл imdb_movies_executable, который требует файла environment.rb, который отвечает за все зависимости, и одна строка кода, которая просто запускает мое приложение.

На данный момент просто создайте метод, который обрабатывает парсинг веб-сайта.

5. Получение HTML и преобразование его в объект Nokogiri

def self.parse
   doc = Nokogiri::HTML(open(url))
end

Поскольку я парсю веб-сайт IMDB, я помещу эту ссылку https://www.imdb.com/chart/top?ref=nv_mv_250_6_" в место url и присвою ее переменной I, чтобы вы могли использовать ее позже.

6. Разбор данных для получения нужной информации

Это самая сложная часть, так как способ разбора данных зависит от структуры веб-сайта. Здесь вам нужно использовать binding.pry ОЧЕНЬ МНОГО!!

Вы будете тестировать разные теги и методы для парсинга того, что вам нужно, поэтому используйте pry, чтобы войти в вашу программу и посмотреть, что возвращает ваш метод парсера. Важно всегда знать возвращаемое значение переменных и методов, как общее правило.

xpath, cs и search возвращают массив узлов для каждого экземпляра доступа.

at_xpath и at_css возвращают первый узел.

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

7. Используйте его по своему усмотрению!!

Вы справились. Поаплодируйте себе. Пойдите порадуйте себя тем мороженым-тортом, которое вы так желали.

Как только у вас есть нужная информация, вы можете отобразить ее пользователю с помощью puts, использовать эту информацию для дальнейшего изучения другой ссылки или делать все, что вам нравится.

Надеюсь, что это помогло вам начать парсить веб!