Ver Mensaje Individual
  #6  
Viejo 21/06/10, 17:32:59
Array

[xs_avatar]
ocapocap ocapocap no está en línea
Usuario novato en la web
 
Fecha de registro: jun 2010
Mensajes: 17
Modelo de smartphone: HTC Hero

Obtener datos precio gasolina

Hola de nuevo

Con la web del ministerio no parece que haya mucho que se pueda hacer. Pero echando un vistazo por ahí, he encontrado la web www.elpreciodelagasolina.com que tiene información de los precios de las gasolineras, accesible mediante parámetros.

He hecho un pequeño programilla (en Java) de ejemplo para que veas cómo acceder.

Código:
public static void main(String[] args) {
        try {
            String loc = javax.swing.JOptionPane.showInputDialog("Localidad /Provincia");
            URL url = new URL("http://www.elpreciodelagasolina.com/gasolineras/" + loc);
            URLConnection cnn = url.openConnection();
            BufferedReader br = new BufferedReader(new InputStreamReader(cnn.getInputStream()));
            String text;
            String rdo = "";
            String nombre = "";
            String direccion = "";
            String localidad = "";
            String provincia = "";
            String gasolina95 = "";
            String gasolina98 = "";
            String gasoleo = "";
            while ((text = br.readLine()) !=null){
                rdo += text;
            }
            int pos = rdo.indexOf("<td>");
            String distancia;
            int pos2;
            while (pos!=-1){
                pos2 = rdo.indexOf("</td>",pos+5);
                distancia = (rdo.substring(pos+4,pos2));

                pos = rdo.indexOf("<td>",pos2+5);
                
                pos2 = rdo.indexOf("</td>",pos+5);
                nombre = rdo.substring(pos+4,pos2);
                
                pos = rdo.indexOf("<td>",pos2+5);
                pos = rdo.indexOf(">",pos+5) + 1;
                pos2 = rdo.indexOf("</a>",pos);
                direccion = rdo.substring(pos,pos2);
                pos2 = rdo.indexOf("</td>",pos2+1);

                pos = rdo.indexOf("<td>",pos2+5);
                pos = rdo.indexOf(">",pos+5) + 1;
                pos2 = rdo.indexOf("</a>",pos);
                localidad = rdo.substring(pos,pos2);
                pos2 = rdo.indexOf("</td>",pos2+1);

                pos = rdo.indexOf("<td>",pos2+5);
                pos = rdo.indexOf(">",pos+5) + 1;
                pos2 = rdo.indexOf("</a>",pos);
                provincia = rdo.substring(pos,pos2);
                pos2 = rdo.indexOf("</td>",pos2+1);

                pos = rdo.indexOf("<td>",pos2+5);
                pos2 = rdo.indexOf("</td>",pos+5);
                gasolina95 = rdo.substring(pos+4,pos2);

                pos = rdo.indexOf("<td>",pos2+5);
                pos2 = rdo.indexOf("</td>",pos+5);
                gasolina98 = rdo.substring(pos+4,pos2);

                pos = rdo.indexOf("<td>",pos2+5);
                pos2 = rdo.indexOf("</td>",pos+5);
                gasoleo = rdo.substring(pos+4,pos2);

                pos = rdo.indexOf("<td>",pos2+5);
                System.out.println(distancia + " - " + nombre + " - " + direccion + " - " + localidad + " - " + provincia +
                        " - " + gasolina95 + " - " + gasolina98 + " - " + gasoleo);
            }
        } catch (Exception ex){
            ex.printStackTrace();
        }
    }
Por ejemplo, para Bilbao:

Código:
0,769 Km - CAMPSA - PLAZA ERNESTO ERCOREKA, S/N - BILBAO - Vizcaya -           1,154 €         -                    -                   
0,955 Km - REPSOL - CL VIADUCTO MIRAFLORES-LARREAGA, 1 - BILBAO - Vizcaya -           1,167 €         -           1,280 €         -           1,096 €        
1,034 Km - REPSOL - CL VIADUCTO MIRAFLORES-LARREAGA, 2 - BILBAO - Vizcaya -           1,167 €         -           1,280 €         -           1,096 €     
...
Tiene algunas pegas:
  • Si cambia la estructura o el diseño de la web, lo más probable esque el programa deje de funcionar. Con esto no hay nada que hacer.
  • Explotar los datos de la web sin su consentimiento puede que no sea algo completamente legal.
  • Si pones un nombre que puede dar lugar a equívocos (por ejemplo Madrid, que puede ser capital o provincia) no funciona. Lo que hace es retornar otra página con los posibles enlaces a ambos lugares. Te lo dejo para tí. Habría que comprobar cuál son los enlaces y utilizar el que te interese. No es excesivamente complicado. Prueba la página, mira el código fuente desde el navegador y localiza la información que te interesa de manera similar a como lo he hecho yo.

Cuando acabes la aplicación ya me la pasarás para que le eche un vistazo, eh?

Un saludo y suerte
Responder Con Cita