Парсинг HTML може бути корисним для багатьох завдань, таких як витягування даних з веб-сторінок, автоматизація збору інформації або навіть створення веб-скреперів. У цій статті ми розглянемо, як парсити HTML за допомогою мови програмування Ruby. Ми будемо використовувати бібліотеку Nokogiri, яка є однією з найпопулярніших для роботи з HTML та XML у Ruby.
Nokogiri — це потужна бібліотека для парсингу HTML та XML, яка дозволяє легко маніпулювати документами, витягувати дані та виконувати запити. Вона підтримує CSS-селектори та XPath, що робить її дуже гнучкою та зручною у використанні.
Щоб почати використовувати Nokogiri, спочатку потрібно встановити цю бібліотеку. Ви можете зробити це за допомогою Bundler або безпосередньо через RubyGems. Ось як це зробити:
# Додайте до вашого Gemfile gem 'nokogiri' # Або встановіть безпосередньо gem install nokogiri
Тепер, коли у вас встановлена бібліотека, давайте розглянемо, як парсити HTML-документ. Для цього ми спочатку завантажимо HTML-код, а потім використаємо Nokogiri для його парсингу.
Ми можемо завантажити HTML-код з веб-сторінки за допомогою стандартної бібліотеки Ruby `open-uri`. Ось приклад:
require 'open-uri' require 'nokogiri' url = 'https://example.com' html_content = URI.open(url).read
Тепер, коли ми маємо HTML-код, давайте парсити його за допомогою Nokogiri:
doc = Nokogiri::HTML(html_content)
Тепер ми можемо використовувати методи Nokogiri для витягування даних з документа.
Однією з основних функцій парсингу є можливість витягувати дані з HTML-документів. Давайте розглянемо кілька прикладів.
Припустимо, ми хочемо витягнути всі заголовки (h1, h2, h3) з веб-сторінки. Ось як це можна зробити:
headers = doc.css('h1, h2, h3') headers.each do |header| puts header.text end
Витягування всіх посилань з веб-сторінки також є поширеним завданням. Ось як це зробити:
links = doc.css('a') links.each do |link| puts link['href'] end
Якщо ви знаєте, який конкретний елемент вам потрібен, ви можете витягнути текст з нього, використовуючи CSS-селектори:
specific_element = doc.at_css('.specific-class') puts specific_element.text if specific_element
Nokogiri також підтримує XPath, що дозволяє виконувати більш складні запити. Ось приклад використання XPath для витягування всіх абзаців з документа:
paragraphs = doc.xpath('//p') paragraphs.each do |paragraph| puts paragraph.text end
При парсингу HTML важливо обробляти можливі помилки. Наприклад, якщо веб-сторінка недоступна або HTML-код не відповідає очікуваному формату, ваш код може зламатися. Ось як можна обробити помилки:
begin html_content = URI.open(url).read doc = Nokogiri::HTML(html_content) rescue OpenURI::HTTPError => e puts "Помилка при завантаженні: #{e.message}" rescue StandardError => e puts "Сталася помилка: #{e.message}" end
Давайте розглянемо кілька практичних прикладів, які демонструють, як можна використовувати парсинг HTML з Ruby.
Припустимо, ви хочете витягнути заголовки новин з веб-сайту новин. Ось як це можна зробити:
require 'open-uri' require 'nokogiri' url = 'https://news.ycombinator.com/' html_content = URI.open(url).read doc = Nokogiri::HTML(html_content) titles = doc.css('.storylink') titles.each do |title| puts title.text end
Якщо ви хочете витягнути дані з таблиці на веб-сторінці, ось як це можна зробити:
url = 'https://example.com/table' html_content = URI.open(url).read doc = Nokogiri::HTML(html_content) rows = doc.css('table tr') rows.each do |row| cells = row.css('td') cells.each do |cell| print "#{cell.text}\t" end puts end
Парсинг HTML з Ruby за допомогою Nokogiri — це потужний інструмент для збору та обробки даних з веб-сторінок. Завдяки простоті використання та гнучкості, ви можете легко витягувати потрібну інформацію та автоматизувати багато завдань. Сподіваємося, що цей посібник допоможе вам розпочати роботу з парсингом HTML у Ruby!
© 2024 RailsInsights. All rights reserved.