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"> "©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"> </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
Zatiaľ nebol pridaný žiaden komentár.