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 2 Date d'inscription Statut Membre Dernière intervention -
Guillaume57300 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
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.
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:
- Java -> Récupérer les données d'une page web
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Supprimer une page word - Guide
- Web office - Guide
- Comment récupérer les messages supprimés sur whatsapp - Guide
3 réponses
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
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
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.
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.