Парсинг с использованием Nokogiri в 7 шагах.
Это сложно.
Теперь, когда все люди, которые не готовы приложить усилия, ушли, оказалось, что это довольно легко освоить. Я хотел бы отметить, что это не исчерпывающее объяснение того, как работает 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
, использовать эту информацию для дальнейшего изучения другой ссылки или делать все, что вам нравится.
Надеюсь, что это помогло вам начать парсить веб!