Java -> Récupérer les données d'une page web

Résolu
overpowed Messages postés 116 Date d'inscription   Statut Membre Dernière intervention   -  
Guillaume57300 Messages postés 3 Statut Membre -
Bonjour,
Je souhaite récupérer des données pour les afficher en mode console.

Voici le code que j'ai fais:
-------------------------------------------------------------------------------------------------------------------

import acm.program.*;
import squint.NetConnection; //Bibliothèque squint.jar
import squint.*;
public class RecuperationInternet extends ConsoleProgram{

public void run(){

String ligneRecu ="";

NetConnection con = new NetConnection ("climate.gi.alaska.edu", 80);

//Récupération du code html de la page web\\

String requete = "GET / HTTP/1.1\r\n";

requete += "Host : climate.gi.alaska.edu\r\n";
requete += "\r\n";
con.out.println (requete);

while (con.in.hasNext()){
ligneRecu = con.in.nextLine();
println (ligneRecu);
}

//La page est récupéré sans soucis.

//A partir de là, le code ne prend plus. Il y a toujours fail de marqué.

if (ligneRecu.contains("°F")){

String [] ssChaine1 = ligneRecu.split(">");
String[] ssChaine2 = ligneRecu.split("<");
double word = Double.parseDouble(ssChaine2[0]);
println ("[OK]");

}
else{
println (ligneRecu +"[Fail]");
}

if (ligneRecu.contains("%")){

String [] ssChaine3 = ligneRecu.split(">");
String[] ssChaine4 = ligneRecu.split("<");
double word2 = Double.parseDouble(ssChaine4[0]);
println ("La population dans le monde est de "+word2);
}
else{
println ("[Fail]");
}

if (ligneRecu.contains("in")){

String [] ssChaine5 = ligneRecu.split(">");
String[] ssChaine6 = ligneRecu.split("<");
double word3 = Double.parseDouble(ssChaine6[0]);
println ("La population dans le monde est de "+word3);

}
else{
println ("[Fail]");
}

if (ligneRecu.contains("mph")){

String [] ssChaine7 = ligneRecu.split(">");
String[] ssChaine8 = ligneRecu.split("<");
double word4 = Double.parseDouble(ssChaine8[0]);
println ("La population dans le monde est de "+word4);

}
else{
println ("[Fail]");
}
con.close();
}

}

------------------------------------------------------------------------------------------------------------
-Le code html de la page recherché PARTIE IMPORTANTE
------------------------------------------------------------------------------------------------------------

...

<CENTER><FONT SIZE="-2" FACE="Verdana"><STRONG>Temperature(1)</STRONG></FONT></CENTER>

</TD>

<TD WIDTH=75 BGCOLOR="#F0F8FF">

<CENTER><FONT SIZE="-2" FACE="Verdana"><B>Humidity(2)</B></FONT></CENTER>

</TD>

<TD WIDTH=85 BGCOLOR="#F0F8FF">

<CENTER><FONT SIZE="-2" FACE="Verdana"><STRONG>Barometer(3)</STRONG></FONT></CENTER>

</TD>

<TD WIDTH=119 BGCOLOR="#F0F8FF">

<CENTER><FONT SIZE="-2" FACE="Verdana"><B>Wind(4)</B></FONT></CENTER>

</TD>

</TR>

<TR>

<TD WIDTH=75 BGCOLOR="#BBBBBB">

<CENTER><FONT SIZE="-2" FACE="Verdana">32.2 °F(1)</FONT></CENTER> C'EST LA TEMPERATURE QUE JE VEUX PRENDRE

</TD>

<TD WIDTH=75 BGCOLOR="#BBBBBB">

<CENTER><FONT SIZE="-2" FACE="Verdana">38 %(2) </FONT></CENTER>L'HUMIDITE

</TD>

<TD WIDTH=85 BGCOLOR="#BBBBBB">

<CENTER><FONT SIZE="-2" FACE="Verdana">29.728 in(3)</FONT></CENTER>LA PRESSION

ET LE VENT EN mph DE LA MEME FACON

J'aimerais que ça puisse prendre les données

Actuellement ça me met

0[FAIL]
[FAIL]
[FAIL]
[FAIL]

Merci d'avance de votre réponse.

3 réponses

  1. arthurc Messages postés 27 Statut Membre 4
     
    Salut,

    Ne serais tu pas derrière un proxy? auquel cas ca ne peut fonctionner.
    J'utiliserais plus http://download.oracle.com/javase/1.4.2/docs/api/java/net/HttpURLConnection.html
    que de directement attaquer le serveur web via une socket basique
    0
  2. overpowed Messages postés 116 Date d'inscription   Statut Membre Dernière intervention   2
     
    Non, heureusement car je suis chez moi et aucun filtre ne bloque les pages internet chez moi. (Il n'y a aucun mineur donc pas de blocage parentale)
    Mais ayant trouvé la solution, je vous passe la réponse au cas ou quelqu'un serais embêté comme moi.

    ----------------------------------------------------------------------------
    code
    ----------------------------------------------------------------------------

    import squint.NetConnection;
    import acm.program.ConsoleProgram;
    import acm.graphics.*;

    public class RecuperationInternetGraphique {
    private GImage map;
    public void run()
    {

    map = new GImage ("ak_h.gif", 0, 0);

    /***********************************************************
    * Permet de mettre en mémoire le code html de la page web.*
    ***********************************************************/

    NetConnection cnx = new NetConnection("climate.gi.alaska.edu", 80);
    String requete = "GET / index.html HTTP/ 1.1 \r\n)";
    requete += "Host : climate.gi.alaska.edu \r\n";
    requete += "\r\n";
    cnx.out.println(requete);
    boolean verif = true;

    while(cnx.in.hasNext() && verif == true)
    {

    /***********************************************
    * Permet de prendre les données de la page web*
    ***********************************************/

    ///////////////
    //Temperature//
    ///////////////

    /* String ligneRecue = cnx.in.nextLine();
    if(ligneRecue.contains("°F"))
    {
    String[]sschaine = ligneRecue.split(">");
    String[]sschaine2 = sschaine[2].split("&");
    double temperature = Double.parseDouble(sschaine2[0]);
    println ("La température est de : " + temperature + " °F");
    verif = false;
    }
    }

    verif = true;

    while(cnx.in.hasNext() && verif == true)
    {
    String ligneRecue = cnx.in.nextLine();
    if(ligneRecue.contains("%"))
    {
    ////////////
    //Humidité//
    ////////////

    String[]sschaine3 = ligneRecue.split(">");
    String[]sschaine4 = sschaine3[2].split("&");
    double humidite = Double.parseDouble(sschaine4[0]);
    println ("L'humiditée est : " + humidite + " %");
    verif = false;
    }
    }
    verif = true;
    while(cnx.in.hasNext() && verif == true)
    {
    ////////////
    //Pression//
    ////////////

    String ligneRecue = cnx.in.nextLine();
    if(ligneRecue.contains(" in"))
    {
    String[]sschaine5 = ligneRecue.split(">");
    String[]sschaine6 = sschaine5[2].split("&");
    double barometre = Double.parseDouble(sschaine6[0]);
    println ("Le baromètre est de : "+ barometre + " in");
    verif = false;
    }
    }

    verif = true;

    while(cnx.in.hasNext() && verif == true)
    {

    ////////
    //Vent//
    ////////

    String ligneRecue = cnx.in.nextLine();

    if(ligneRecue.contains("mph"))
    {
    String[]sschaine7 = ligneRecue.split("at");
    String[]sschaine8 = sschaine7[1].split("&");
    double vent = Double.parseDouble(sschaine8[0]);
    println ("La vitesse du vent est de : " + vent + " mph");
    verif = false;
    }
    }

    cnx.close(); //Fin de connexion\\*/
    }

    }

    }
    --------------------------------------------------------------------------------------------------
    fin
    --------------------------------------------------------------------------------------------------
    Merci quand même d'avoir répondu.
    Cordialement.
    0
  3. Guillaume57300 Messages postés 3 Statut Membre
     
    Bonjour,

    J'ai essayé de compiler ce code mais les importations ne fonctionnent pas je n'ai aucune idée de pourquoi...

    Quelqu'un peut-il m'aider pleease?

    Merci!
    0