09/03/09 CNAM de Tours NFA005 – Algorithmique et Programmation avec Java : Travaux Pratiques TP 4 - Lecture et analyse du code HTML d’une page web Exercice 1) Importer le fichier « AnalysePageWeb.java » (contenu visible à la page suivante) dans Eclipse. Que fait ce programme ? Evolutions 2) A partir du programme précédent, écrire un programme qui - demande à l’utilisateur de saisir l’adresse de la page web à « analyser », - affiche les liens hypertextes contenus dans la page parcourue. 3) Ecrire un programme qui : - demande à l’utilisateur de saisir : - l’adresse de la page web à analyser, - le « niveau de profondeur » de la recherche, - affiche les liens hypertextes contenus dans les pages parcourues. 4) Ecrire un programme qui : - demande à l’utilisateur de saisir : - l’adresse de la page web à analyser, - la balise à rechercher, - affiche le(s) contenu(s) trouvé(s) entre les balises ciblées. 1/2 AnalysePageWeb.java import java.io.*; import java.net.*; class WebPage { URL URLcourant; int nboctets; int nb_href; public WebPage(String u) { try {URLcourant = new URL(u);} catch (MalformedURLException e) { Terminal.ecrireString("PB URL"); } nboctets=0; nb_href=0; } public void etude() { char caractCourant; String baliseCourante; try { InputStream uuu = URLcourant.openStream(); DataInputStream donneesHTML = new DataInputStream(uuu); while (true) { caractCourant = (char) donneesHTML.readByte(); nboctets++; if (caractCourant == '<') { baliseCourante = analyseBalise(donneesHTML); if (baliseCourante.startsWith("<A HREF") || baliseCourante.startsWith("<a href")) { Terminal.ecrireStringln(baliseCourante); nb_href++; } } } } catch (EOFException e) { Terminal.ecrireStringln("TERMINE: Taille = "+nboctets+" NB HREF = "+nb_href); } catch (IOException e) { System.out.println(e); } } public String analyseBalise(DataInputStream is) { StringBuffer baliseCourante = new StringBuffer("<"); char caractCourant = '<'; try { while (caractCourant != '>') { caractCourant = (char) is.readByte(); baliseCourante.append(caractCourant); nboctets++; } } catch(EOFException e) { Terminal.ecrireStringln("PB fin page"); } catch(Exception e) { System.err.println(e); } return baliseCourante.toString(); } } public class AnalysePageWeb { public static void main(String[] args) { WebPage pg = new WebPage("http://cnam37.free.fr"); pg.etude(); } } 2/2