Java -> Récupérer les données d'une page web [Résolu/Fermé]

Signaler
Messages postés
116
Date d'inscription
samedi 26 avril 2008
Statut
Membre
Dernière intervention
19 octobre 2013
-
Guillaume57300
Messages postés
2
Date d'inscription
mercredi 18 décembre 2013
Statut
Membre
Dernière intervention
18 décembre 2013
-
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

Messages postés
26
Date d'inscription
mardi 22 février 2011
Statut
Membre
Dernière intervention
25 mars 2011
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
Messages postés
116
Date d'inscription
samedi 26 avril 2008
Statut
Membre
Dernière intervention
19 octobre 2013
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.
Messages postés
2
Date d'inscription
mercredi 18 décembre 2013
Statut
Membre
Dernière intervention
18 décembre 2013

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!