Основные понятия для парсинга
Table Of Content
Парсинг - это метод извлечения и переорганизации данных из 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, вместо этого используйте дефис! *один уровень ниже - это пробел *класс представлен точкой