Más Hpricot para el Buscaboe

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

Hierarchy: previous, next

Comments

There are 0 comments on this post. Post yours →

Post a comment

Required fields in bold.






Markdown syntax enabled (no html). See the syntax rules for help.