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

Résolu/Fermé
overpowed Messages postés 116 Date d'inscription samedi 26 avril 2008 Statut Membre Dernière intervention 19 octobre 2013 - 24 mars 2011 à 18:50
Guillaume57300 Messages postés 2 Date d'inscription mercredi 18 décembre 2013 Statut Membre Dernière intervention 18 décembre 2013 - 18 déc. 2013 à 10:35
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.
A voir également:

3 réponses

arthurc Messages postés 26 Date d'inscription mardi 22 février 2011 Statut Membre Dernière intervention 25 mars 2011 4
25 mars 2011 à 13:00
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
overpowed Messages postés 116 Date d'inscription samedi 26 avril 2008 Statut Membre Dernière intervention 19 octobre 2013 2
25 mars 2011 à 18:09
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
Guillaume57300 Messages postés 2 Date d'inscription mercredi 18 décembre 2013 Statut Membre Dernière intervention 18 décembre 2013
18 déc. 2013 à 10:35
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