Más Hpricot para el Buscaboe
- Posted by Amaia on November 26, 2007 at 11:42 PM
- Comments: 0 (view/add your own)
- tags: buscaboe, hpricot, rails
Hoy me ha extrañado que el BuscaBoe, nuestro buscador de subvenciones, llevase varios días que no encontraba nada. Ya me pareció raro cuando lo ví el sábado, pero pensé que igual era por el fin de semana, que no habían publicado nada relativo a ayudas o subvenciones, y como todavía andaba con la resaca post-conferencia, pues no le dí mucha imprtancia.
Hoy he mirado la página del BOE para comprobarlo y resulta que han cambiado la estructura del html de la página del sumario, que es la que usa el BuscaBoe para buscar. La verdad es que ahora está mejor estructurada que antes, aunque todavía no acabe de estar bien.
Aprovechando que tenía que cambiar el patrón de búsqueda he decidido hacerlo con hpricot, que viene al pelo para estas cosas (antes usaba una expresión regular).
El meollo de la cuestión queda así con la nueva estructura:
def buscar(fecha)
fecha_s = fecha.strftime("%Y/%m/%d")
url = "http://boe.es/g/es/boe/dias/#{fecha_s}/sumario.php"
boe = Hpricot(Iconv.iconv("UTF-8", "ISO-8859-1", open(url).read).join)
dispos = boe.search("//li[@class='dispo']")
n = boe.search("//p[@class='titSolapas']").first
n.search("/abbr").remove
n1 = n.inner_html
numero = n1.scan(/( )(.*)(])/i).first[1]
dispos.each_with_index do |d, i|
enlace = d.search("//li[@class='puntoHTML']/a").first["href"]
enlace.gsub!("../../../../../", "http://boe.es/g/es/")
d.search("//div[@class='enlacesDoc']").remove
texto = d.inner_html.chomp
if texto.include?("ayuda ") || texto.include?("ayudas") || texto.include?("subvenci")
doc = Hpricot(open(enlace))
sumario = doc.search("//div[@class='BoeSumarioBD']")
seccion = sumario.at("h1").inner_html
subseccion = sumario.at("h2").inner_html
if !Entrada.find_by_enlace(enlace)
Entrada.create(:fecha => fecha, :numero_boe => numero, :texto => texto, :enlace => enlace, :seccion => seccion, :subseccion => subseccion)
end
end # if texto
end # dispos.each
end #end buscar
Comments
There are 0 comments on this post. Post yours →
Post a comment
Required fields in bold.