Skoč na hlavné menu

Spracovanie HTML v Ruby

Kategórie: Webdesign, Ruby and Rails

Dnes by som rád predstavil ďalšiu Ruby knižnicu. Volá sa Hpricot a je to parser HTML dokumentov.

Inštaluje sa ako hocijaký iný Ruby gem balíček:

gem install hpricot

Pred použitím treba knižnicu načítať, rovnako ako open-uri ktorú využijeme na otváranie URL adresy.

require "hpricot"
require "open-uri"

Vstupom môže byť reťazec alebo priamo HTML súbor:

doc = Hpricot("<p>Lorem ipsum dolor sit.</p>")
doc = open("index.html") { |f| Hpricot(f) }
doc = Hpricot(open("http://www.google.com"))

Na vyhľadanie viacerých HTML elementov použijeme metódu search. Pokiaľ chceme iba prvý nájdený, použijeme at.

doc.search("p")
=> #<Hpricot::Elements[{elem <p> {elem <font size="-2"> "&copy;2007 Google" </font>} </p>}]>
doc.at("title")
=> {elem <title> "Google" </title>}

Kritériá pre hľadanie môžu byť zadané prostredníctvom CSS selektorov alebo XPath výrazu. Cez výsledky sa dá jednoducho iterovať:

doc = Hpricot(open("http://news.google.com"))

(doc/"#topSection td a.d").each do |anchor|
  puts anchor["href"]
  puts anchor.inner_html
end

=> /?ned=us&topic=w
<font size="-2">&nbsp;</font>
/?ned=us&topic=w
<font size="-1"><b>World</b></font>
/?ned=us&topic=n

Načítaný dokument je možné ľubovoľne zmeniť. Malý príklad:

doc = Hpricot("<p>Lorem <span>ipsum</span> dolor <em>sit</em>.</p>")

el = doc.at("span")
puts el
=> <span>ipsum</span>

el["class"] = "ipsum"
puts el
=> <span class="ipsum">ipsum</span>

doc.search("span").remove
puts doc.to_html
=> <p>Lorem dolor <em>sit</em>.</p>

doc.at("em").swap("<strong>amet</strong>")
puts doc.to_html
=> <p>Lorem dolor <strong>amet</strong>.</p>

Viac informácií a príkladov nájdete na wiki k projektu.

19. 12. 2007, 15.56 stalker Komentár

Páčil sa Ti článok? pošli do vybrali.sme.sk

Komentáre

RSS komentárov

Zatiaľ nebol pridaný žiaden komentár.

Nový komentár

Podľa možností píšte spisovne, s diakritikou, slušne a k veci.

Môžete používať HTML syntax. Povolené značky sú: <strong>, <em>, <code>, <abbr>, <acronym>, <a>, <blockquote> a <cite>. Formátovanie nových riadkov ostáva zachované, prázdny riadok znamená začiatok nového odstavca.