miércoles, 12 de diciembre de 2007

Tema 12. hpricot

-Es un parser de HTML sencillo de usar y a la vez muy
potente.
Nos permite extraer información de páginas HTML.

Básicamente es una libreria la cual permite pasar código HTML a un objeto.

En nuestra clase necesitamos implementar :

require 'open­uri'
require 'hpricot'

  • open­uri: Nos permite abrir una url, por ejemplo una pagina html.
  • hpricot; Nos permite utilizar la librería Hpricot Hpricot Basics.

Cargar una pagina HTML:

Se puede cargar de un String:

 doc = Hpricot("<p>A simple <b>test</b> string.</p>")



Se puede cargar de un Fichero:
  • doc = open("index.html") { |f| Hpricot(f) }
Se puede cargar de una url:
  • require 'open­uri'
  • doc = Hpricot(open("http://qwantz.com/"))
Buscar Elementos:

Se pueden usar expresiones XPath o CSS.

Expresiones CSS

Doc.search realiza una búsqueda recibiendo como
parámetro la expresión, nos devolverá un array.
doc.search (“p.posted”)
doc / “p.posted” ­­> “ / ” Alias del metodo search
En ambos casos se devolverán todos los elementos
p con la clase “posted”.
< class =" “posted”">

Selectores CSShttp://www.w3.org/TR/CSS21/selector.html (punto 5.1)

Encadenar Búsquedas

require 'rubygems'
require 'open­uri'
require 'hpricot'
men = open("http://www.marca.es")
doc = Hpricot(men)
noticia = doc / ".noticiaPrincipal"
enlace = noticia / "a"
puts "Elementos <a> dentro de la
clase noticiaPrincipal"
enlace.each{|e|
puts e.inner_html
}


Obtener Elementos

inner_html: Este método nos devuelve el html
interno del elemento.
get_attibute(“atributo”): Este método nos devuelve
un atributo de un elemento. (También se puede
acceder con [] )
enlace.each{|t|
puts t['href']
puts t.get_attribute('href')
}


Nota: para añadir codigo HTML y que no sea interpretado:
http://blogcrowds.com/resources/parse_html.php

No hay comentarios: