CoderCastrov logo
CoderCastrov
Веб-разработка

Основные понятия для парсинга

Основные понятия для парсинга
просмотров
2 мин чтение
#Веб-разработка

Парсинг - это метод извлечения и переорганизации данных из HTML. Он разбивает информацию и собирает ее заново в переопределенном API (интерфейсе прикладного программирования). Это позволяет получать нужную информацию из различных источников для вашего приложения.

Зачем нужен парсинг? Парсинг - это явление, когда переорганизованная информация может представлять что-то новое для пользователя. Выбирая только нужную информацию, упрощая и переопределяя мир, вы создаете более эффективное решение.

При использовании парсинга убедитесь, что установили гем Nokogiri, введя следующую команду в терминале:

gem install nokogiri

"Open-URI - это модуль в Ruby, который позволяет нам программно отправлять HTTP-запросы. Он предоставляет нам множество полезных методов для различных типов запросов, но для этого руководства нас интересует только один: open. Этот метод принимает один аргумент - URL и вернет нам HTML-контент этого URL." - Из урока

Например:

html = open('http://www.google.com') *сохраняет HTML Google в переменную с именем html. (Более точно, он фактически сохраняет HTML во временный файл, на который мы затем можем вызвать read, чтобы получить сырой HTML.

В файле scraper.rb убедитесь, что вы написали:

Мы можем использовать следующую строку, чтобы получить HTML, составляющий главную страницу Flatiron School на flatironschool.com:

Если вам нужен сам текст "350+ lives changed, and counting.", то будьте очень конкретными с тем, в каком CSS-селекторе он находится. Откройте инспектор элементов, наведите курсор на нужный текст и найдите CSS-селектор, в котором он находится. В данном случае он находится в

так как вызывается метод .css? Как его использовать?

В файле scraper.rb:

Давайте вызовем .css у doc и передадим ему аргумент нашего CSS-селектора:

Если мы выведем результат этого вызова метода:

Мы получим:

Вот наш текст! Захороненный там. Чтобы его получить, мы можем вызвать .text на нем:

Перебор элементов

Давайте сначала получим список преподавателей с flatironschool.com/teampage.

Давайте переберем массив преподавателей с помощью .each и выведем "Flatiron School ❤ " с именем преподавателя.

Мы увидим что-то вроде этого:

Итак, снова, когда вы начинаете парсить

ПЕРВЫЙ ШАГ: сначала настройте некоторые переменные:

  • Это просто открывает файл и считывает его в переменную

решение для парсинга лаборатории Kickstarter:

require "nokogiri" require 'pry'

def create_project_hash html = File.read('fixtures/kickstarter.html') kickstarter = Nokogiri::HTML(html) projects = kickstarter.css("li.project.grid_4").each do |project| binding.pry

title = project.css("h2.bbcard_name strong a").text
projects[title] = {
  :image_link => project.css("div.project-thumbnail a img").attribute("src").value,
  :description => project.css("p.bbcard_blurb").text,
  :location => project.css("ul.project_meta span.location-name").text,
  :percent_funded => project.css("ul.project-stats li.first.funded strong").text.gsub("%", "").to_i
}

end projects end

*не ставьте пробел после location, вместо этого используйте дефис! *один уровень ниже - это пробел *класс представлен точкой