Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RECUPERER LE CODE HTML D'UNE PAGE WEB


Information sur la source

Catégorie :Reseaux et Internet Classé sous : url, urlconnection, html, stringbuilder Niveau : Débutant Date de création : 24/02/2006 Date de mise à jour : 06/04/2006 14:39:46 Vu : 19 560

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note


Description

je poste cette fonction car en moins d'un mois j'ai du la poster trois ou quatre fois

elle permet de se connecter a l'url passe par parametre et de recuperer le code html de la page
 

Source

  • public static String getIpFrom(String adresse) {
  • String toreturn = null;
  • try {
  • // creation d'un objet URL
  • URL url = new URL(adresse);
  • // on etablie une connection a cette url
  • URLConnection uc = url.openConnection();
  • // on y cree un flux de lecture
  • InputStream in = uc.getInputStream();
  • // on lit le premier bit
  • int c = in.read();
  • // on cree un StringBuilder pour par la suite y ajouter tout les bit lus
  • StringBuilder build = new StringBuilder();
  • // tant que c n'est pas egale au bit indiquant la fin d'un flux...
  • while (c != -1) {
  • build.append((char) c);
  • // ...on l'ajoute dasn le StringBuilder...
  • c = in.read();
  • // ...on lit le suivant
  • }
  • // on retourne le code de la page
  • toreturn = build.toString();
  • } catch (MalformedURLException e) {
  • e.printStackTrace();
  • } catch (IOException e) {
  • e.printStackTrace();
  • }
  • return toreturn;
  • }
public static String getIpFrom(String adresse) { 
		String toreturn = null;
		  try { 
//		creation d'un objet URL 
		    URL url = new URL(adresse); 
//		on etablie une connection a cette url 
		   URLConnection uc = url.openConnection(); 
//		on y cree un flux de lecture 
		   InputStream in = uc.getInputStream(); 
//		on lit le premier bit 
		   int c = in.read(); 
//		on cree un StringBuilder pour par la suite y ajouter tout les bit lus 
		   StringBuilder build = new StringBuilder(); 
//		tant que c n'est pas egale au bit indiquant la fin d'un flux... 
		   while (c != -1) { 
		    build.append((char) c); 
//		...on l'ajoute dasn le StringBuilder... 
		    c = in.read(); 
//		...on lit le suivant 
		   } 
//		on retourne le code de la page 
		   toreturn = build.toString(); 
		   
		  } catch (MalformedURLException e) { 
		  
		   e.printStackTrace(); 
		  } catch (IOException e) { 
		  
		   e.printStackTrace(); 
		  }
		   return toreturn;
		 } 

Conclusion

voilà en esperant avoir pu etre utile
 

Historique

24 février 2006 20:41:37 :
petites fautes de frappes embetante dans les commentaires
06 avril 2006 14:39:47 :
petite correction

Commentaires et avis

signaler à un administrateur
Commentaire de chebil le 05/03/2006 17:02:47

Bonjour
comment visualiser le contenu d'une page html sécuriséé par un login et un mot de passe (bien sur j'ai un login et un mot de passe). Y'a t'il une methode d'authentification??? Merci

signaler à un administrateur
Commentaire de sheorogath le 05/03/2006 19:34:17 administrateur CS

cela depend de la methode d'authentifiquation
si les identifiant se passe par l'url alors il n'y auras pas de probleme sinon pour les autre cas je n'en ai aucune idee vu que je n'y ai pas reflechis encore


++

signaler à un administrateur
Commentaire de alinou84 le 21/04/2006 11:42:03

bonjour,

jai essayer de tester le code mais le probleme est que ca ne reconnait pas la classe StringBuilder...
comment peut on faire? ya til une alternative a l'utilisation de cette fonction?

merci:)

signaler à un administrateur
Commentaire de sheorogath le 21/04/2006 18:37:50 administrateur CS

passe au jdk1.5.0 ou alors tu le change en StringBuffer si je me souvient bien

++

signaler à un administrateur
Commentaire de hanieh1 le 15/08/2006 15:44:13

j'ai une question précise dont je trouve nulpart la
réponse.
J'ai crée une parseur java, qui parse une URL, en créant
un fichier HTML et traitant chaque balise.et mon problème
c'est que en utilisant des méthodes de genre :

public String parseElement(Element pElem, Production pProd)
{


if(pElem.getAttributes().getAttribute(StyleConstants.NameAttribute)
== javax.swing.text.html.HTML.Tag.H1)
{......



je ne peux récupérer que le premier String des balises,
par exemple si dans le fichier HTML j'ai :


<b class="ch">Certification:</b>
<a
href="/List?certificates=Spain:13&&heading=14;Spain:13">Spain:13</a>
<i>(re-rating)</i> / <a
href="/List?certificates=Canada:AA&&heading=14;Canada:AA">Canada:AA< /a>
......



je peux récupérer que Spain:13 et non Canada:AA

est-ce que par hazard vous avez une idée...???!!!!

Merci d'avance et bonne après midi
Hanieh

signaler à un administrateur
Commentaire de sheorogath le 28/08/2006 15:33:47 administrateur CS

je n'ai meme pas compris la demande ...

signaler à un administrateur
Commentaire de nerux le 13/09/2006 09:30:18

Bonjour,
J'aurais aimé savoir si quelqu'un connaissait la reponse a la question du tout premier post de chebil :

comment visualiser le contenu d'une page html sécuriséé par un login et un mot de passe (bien sur j'ai un login et un mot de passe). Y'a t'il une methode d'authentification??? Merci

J'ai fait pas mal de recherche sur le net, en vain, donc si quelqu'un pouvait m'aider. Merci d'avance.

signaler à un administrateur
Commentaire de sheorogath le 13/09/2006 14:05:26 administrateur CS

je sais pas je n'ai pas jamais essayé

si je devais le faire j'irais coir du coter du package de apache , htmlconnection il me semble ou un truc de ce genre ^^

sinon un coup chez les Socket mais ca risque d'etre assez penible

voila
++

signaler à un administrateur
Commentaire de chebil le 26/09/2006 00:17:29

j'ai réussi a recuperer le code html d'une page securisee en utilisant le code suivant:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.Authenticator;
import java.net.PasswordAuthentication;
import java.net.*;
import java.io.*;
class DialogAuthenticator extends Authenticator {
  private JDialog passwordDialog;
  private JLabel mainLabel = new JLabel(
      "Donner votre nom d'utilisateur et mot de passe: ");
  private JLabel userLabel = new JLabel("Nom d'utilisateur: ");
  private JLabel passwordLabel = new JLabel("Mot de passe: ");
  private JTextField usernameField = new JTextField(20);
  private JPasswordField passwordField = new JPasswordField(20);
  private JButton okButton = new JButton("OK");
  private JButton cancelButton = new JButton("Annuler");
  public DialogAuthenticator() {
    this("", new JFrame());

  }

  public DialogAuthenticator(String username) {
    this(username, new JFrame());
  }

  public DialogAuthenticator(JFrame parent) {
    this("", parent);
  }

  public DialogAuthenticator(String username, JFrame parent) {
    this.passwordDialog = new JDialog(parent, true);
    passwordDialog.setLocation(400, 300);
    Container pane = passwordDialog.getContentPane();
    pane.setLayout(new GridLayout(4, 1));
    pane.add(mainLabel);
    JPanel p2 = new JPanel();
    p2.add(userLabel);
    p2.add(usernameField);
    usernameField.setText(username);
    pane.add(p2);
    JPanel p3 = new JPanel();
    p3.add(passwordLabel);
    p3.add(passwordField);
    pane.add(p3);
    JPanel p4 = new JPanel();
    p4.add(okButton);
    p4.add(cancelButton);
    pane.add(p4);
    passwordDialog.pack();

    ActionListener al = new OKResponse();
    okButton.addActionListener(al);
    usernameField.addActionListener(al);
    passwordField.addActionListener(al);
    cancelButton.addActionListener(new CancelResponse());
  }

  private void show() {
    String prompt = this.getRequestingPrompt();
    if (prompt == null) {
      String site = this.getRequestingSite().getHostName();
      String protocol = this.getRequestingProtocol();
      int port = this.getRequestingPort();
      if (site != null & protocol != null) {
        prompt = protocol + "://" + site;
        if (port > 0)
          prompt += ":" + port;
      }
      else {
        prompt = "";
      }
    }
    mainLabel.setText("Se connecter à "
                      + prompt + ": ");
    passwordDialog.pack();
    passwordDialog.show();
  }

  PasswordAuthentication response = null;
  class OKResponse
      implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      passwordDialog.hide();
// The password is returned as an array of
// chars for security reasons.
      char[] password = passwordField.getPassword();
      String username = usernameField.getText();
// Erase the password in case this is used again.
      passwordField.setText("");
      response = new PasswordAuthentication(username, password);
    }
  }

  class CancelResponse implements ActionListener {
    public  Interface rootInterface;
    public void actionPerformed(ActionEvent e) {

      passwordDialog.hide();
// Erase the password in case this is used again.
      passwordField.setText("");
      rootInterface.monitorFrame.votreIP2.setText("");
      response = null;
    }
  }

  public PasswordAuthentication getPasswordAuthentication() {
    this.show();
    return this.response;

    }
  }


public class SecureSourceViewer {
public SecureSourceViewer (String ip) {
DialogAuthenticator d=new DialogAuthenticator();
Authenticator.setDefault(d);
try {
//Open the URL for reading
URL u = new URL("http://"+ip);
InputStream in = u.openStream( );

}
catch (MalformedURLException e) {
System.err.println( "http://"+ip+"n'est pas joignable");
}
catch (IOException e) {
System.err.println(e);

}

}
}



signaler à un administrateur
Commentaire de n1k00 le 15/10/2006 16:03:57

Bonjour voila j'ai réussit à récupérer le code html d'une page web (google lors de mon test) et à la renvoyer dans une textarea. Maintenant j'aimerais savoir comment faire pour afficher la page que je souhaite au lieu d'avoir la longue ligne de code.

signaler à un administrateur
Commentaire de sheorogath le 15/10/2006 18:56:16 administrateur CS

JEditorPane

signaler à un administrateur
Commentaire de Waldo2188 le 18/10/2006 17:07:30

Salut à tous !
Ta source est pas mal mais la boucle est un peu longue.
En fouillant un peut sur le web j'ai trouvé ca :

InputStream in = new URL( "http://www.kickjava.com" ).openStream();
try {
   InputStreamReader inR = new InputStreamReader( in );
   BufferedReader buf = new BufferedReader( inR );
   String line;
   while ( ( line = buf.readLine() ) != null ) {
     System.out.println( line );
   }
} finally {
   in.close();
}

L'avantage de ce code c'est qu'il ne lit pas caractère par caractère mais ligne par ligne, ce qui  est quand même plus rapide.

Sur ce bonne continuation

signaler à un administrateur
Commentaire de sheorogath le 18/10/2006 17:15:33 administrateur CS

ouaip jaurais pu utilise un bufffer aussi ^^
ya plusieur maniere de faire

signaler à un administrateur
Commentaire de KissyFroth le 03/11/2006 19:02:56

Salut
J'aime bien ta source mais malheureusement elle ne permet pas de récupérer le code de pages générées (genre http://www.google.fr/search?hl=fr&q=chien&meta= ) ce qui correspond à la recherche "chien" sous google.
Est-ce que quelqu'un saurait comment il faut faire ?
Note : je te met 8/10 non pas pour la complexité mais parce qu'elle est bien pratique.

signaler à un administrateur
Commentaire de sheorogath le 04/11/2006 14:49:29 administrateur CS

merci

en effet google limite l'acces de ces page , je pense que si des variable comme le referer ou au(tre n'est pas envoyer la connection ne peux s'effectuer ...

signaler à un administrateur
Commentaire de cedricweb le 19/11/2006 16:02:32

Bonjour,
Ce code est tres bien fait, avec beaucoup de commentaires, ce qui permet de bien comprendre comment cela fonctionne, merci.

Existerait-il un équivalant en JavaScript ? ;-)

signaler à un administrateur
Commentaire de sheorogath le 19/11/2006 16:43:46 administrateur CS

j'en sais rien certyainement mais c pas la qu'il faut chercher ...

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

fermer puis ouvrir une page HTML [ par dyfred ] Ce serait peut-etre plus simple mais je ne sais pas comment faire puisque les donnees sont gardees en memoire contre ma volonte.J'ai d'ailleurs un aut nom page html dans l'URL [ par kitiara999 ] Bonjour &#224; tous,&nbsp;&nbsp;&nbsp;J'ai un bug dans un site Internet, la barre d'adresse affiche toujours l'URL de la page pr&#233;c&#233;dente que Problm applet + TextField [ par TontonLuc ] Cette Applet redescend le contenu d'un fichier .txt qui se trouve sur le Net mais ça marche uniqmt lorsque je lance l'Applet d'une fenêtre Dos. J'aime Lire HTML [ par cedalbator ] Bonjour,Après avoir beaucoup appris en parcourant le forum, je suis toujours a la recherche du code magique.Je suis en train de faire une petite appli taille d'un fichier avec url [ par aurelbobol6 ] Bonjour,je recherche la taille d'un fichier sur un serveur distant. J'ai appliqué la méthode suivante qui marche pour les adresses HTTP mais pas pas p JEditorPane + HTML [ par tominfo ] J'arrive pas à mettre mon fichier HTML dans un JEditorPane. Voici mon code (ou un des nombreux essais...):java.net.URL url=null;try { url = new j Très-très débutant. [ par mastere30 ] Hello tlm,comme énnoncé dans le titre, je suis tout neuf au niveau Java, j'y connais carrément rien et dois apprendre afin d'obtenir une place au dev fermer une page html etl'ouvrir de nouveau [ par dyfred ] Bonjour,Lorsque je suis dans une applet, lors d'un appui sur un bouton, j'efface des donnees. Ces donnees restent quand meme stockees en memoire. Et q interaction entre html et java via javascript [ par rmo ] Bonjour à tous.Je cherche à trouver comment par une action sur un boutoon html, lancer une action dans une applet java.Merci. PROG-Zone, la programmation sous tous les langages [ par sebrs1 ] Salut à tous les développeurs, je viens de mettre en ligne mon tout nouveaux site qui servira à tout le monde quelque soit le langage dans lequel vous


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.