INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens



Documents pareils
Manuel de mise en page de l intérieur de votre ouvrage

Chap III : Les tableaux

Cégep de Saint Laurent Direction des communications et Direction des ressources technologiques. Projet WebCSL : Guide de rédaction web

Manuel d'utilisation du site Deptinfo (Mise en route)

Les Bases. Messaoudi Khaled, Boukelal Hanane (Etudiants Informatique ) 2015.

Styler un document sous OpenOffice 4.0

Publier dans la Base Documentaire

COMMENT REDIGER UN RAPPORT TECHNIQUE?

Création d articles sur le site web du GSP

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Utilisation de l éditeur.

Chapitre 3 : outil «Documents»

Méthode du commentaire de document en Histoire

EXCEL TUTORIEL 2012/2013

PROJET ALGORITHMIQUE ET PROGRAMMATION II

Ecrire pour le web. Rédiger : simple, concis, structuré. Faire (plus) court. L essentiel d abord. Alléger le style. Varier les types de contenus

HTML. Notions générales

Dragon Naturally Speaking 13

Comment automatiser la création d index multiples avec Word Paul-Henri Dumas - URFIST

CREER UN PETIT SITE WEB EN COMPOSANT DES PAGES HTML

TD3: tableaux avancées, première classe et chaînes

1 - Se connecter au Cartable en ligne

Consignes générales :

TP : Gestion d une image au format PGM

Formation Word/Excel. Présentateur: Christian Desrochers Baccalauréat en informatique Clé Informatique, 15 février 2007

Créer un site Web : mode d emploi Sous SPIP, avec le squelette «établissement» de l académie de Versailles

WEBSEMINAIRE INTRODUCTION AU REFERENCEMENT

Guide de réalisation d une campagne marketing

Optimiser pour les appareils mobiles

PLAN. Qui peut faire quoi? Présentation. L'internaute Consulte le site public

HMTL. Exemple de fichier HTML. Structure d un document HTML. Exemple de fichier HTML. Balises HTML. IFT1147 Programmation Serveur Web avec PHP

CONSEILS POUR LA REDACTION DU RAPPORT DE RECHERCHE. Information importante : Ces conseils ne sont pas exhaustifs!

Document d accompagnement pour l utilisation du Cartable en ligne Lycée des Métiers Fernand LÉGER 2013/2014

TP 1. Prise en main du langage Python

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Algorithmique et Programmation, IMA

Introduction à Expression Web 2

LES GRANDES ETAPES DE CREATION D UN WEB DESIGN

Bernard Lecomte. Débuter avec HTML

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

SOMMAIRE AIDE À LA CRÉATION D UN INDEX SOUS WORD. Service général des publications Université Lumière Lyon 2 Janvier 2007

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Prise en main rapide

En fin d activité, vous transformerez le fichier D4_Nom_Prenom en fichier pdf avant de l envoyer à votre enseignant/moniteur.

mon site web via WordPress

Utilisation du client de messagerie Thunderbird

TIC. Réseau informatique. Historique - 1. Historique - 2. TC - IUT Montpellier Internet et le Web

MAILING KOMPOZER... 2 CREEZ UNE PAGE... 2 FORMAT DE LA PAGE... 2 AJOUTER DU TEXTE SUR UNE PAGE... 4

Utiliser le site learningapps.org pour créer des activités interactives

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

LOGICIEL DE GESTION DE DOCUMENTS PDF : PROJET INFO 1

[WINDOWS 7 - LES FICHIERS] 28 avril Logiciel / Windows

L optimisation d une PowerBoutique pour le référencement

UNIVERSITE LA SAGESSE FACULTÉ DE GESTION ET DE FINANCE MBA OPTION MIS. MIAGe METHODES INFORMATIQUES APPLIQUEES A LA GESTION

De EnvOLE 1.5 à EnvOLE 2. Document pour l administrateur

Comment utiliser WordPress»

Traitement de texte : Quelques rappels de quelques notions de base

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Programmation C++ (débutant)/instructions for, while et do...while

demander pourquoi mon site n'apparaît pas sur google ou pourquoi mon site n'est pas référencé par les moteurs de recherche?

Faire de la publicité sur GOOGLE AD-WORDS

LES MOTEURS DE RECHERCHE SUR INTERNET

Initiation à html et à la création d'un site web

Ville et Eurométropole de Strasbourg - Service communication numérique. Mode d emploi

FICHE 17 : CREER UN SITE WEB

Point 3.7. Publier des contenus dans un portail e-sidoc. Janvier 2013 Documentation détaillée V 2.2

Cours d initiation à la programmation en C++ Johann Cuenin

TP1. Outils Java Eléments de correction

Dans l'article précédent, vous avez appris

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Rédigez efficacement vos rapports et thèses avec Word (2ième édition)

Atelier E-TOURISME Optimiser la visibilité de son site sur les moteurs de recherche. ecotourismepro.jimdo.com

Formation > Développement > Internet > Réseaux > Matériel > Maintenance

Conventions d écriture et outils de mise au point

Référencement naturel & E-tourisme. Pau 02/10/2008

COMMENT OPTIMISER SON RÉFÉRENCEMENT NATUREL?

Plate-forme de tests des fichiers XML virements SEPA et prélèvements SEPA. Guide d'utilisation

Projet en nouvelles technologies de l information et de la communication

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

Le langage C. Séance n 4

SEO On-page. Avez-vous mis toutes les chances de votre côté pour le référencement de votre site?

Publication dans le Back Office

GUIDE DU SERVICE DE MESSAGERIE VOCALE

Simulation d un système de paiement par carte bancaire

GUIDE D UTILISATION DU BACKOFFICE

Groupe Eyrolles, 2006, pour la présente édition, ISBN :

Référencement et visibilité sur Internet Comment améliorer la visibilité de son site internet sur les principaux moteurs de recherche?

Guide et conseils généraux pour optimiser le référencement d un site internet

Comment bien référencer mes sites internet? Les 100 SECRETS EN VIDÉO

TP1 - Prise en main de l environnement Unix.

< Atelier 1 /> Démarrer une application web

Manuel d utilisation pour la plateforme BeExcellent MANUEL D UTILISATION POUR LA PLATEFORME BEEXCELLENT

COMMENT PUBLIER SUR ARIANE?

Référencement Vendredi 4 Juillet Ile Degaby

Pas-à-pas. Créer une newsletter avec Outlook

Tutoriel : Créer un site web simple avec Composer. Fiche consigne Page 1 sur 6

Débuter avec Easyweb B

Nouveautés de la version moodle 2.7

Transcription:

INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens Année académique 2009 2010 1 Introduction Ce projet est le premier d une série de quatre projets qui ont pour but de vous faire développer un système de page ranking. Le page ranking est un algorithme utilisé par les moteurs de recherche sur Internet (comme google), dans le but de classer les pages web selon leur degré d intérêt pour un certain critère de recherche. Pour ce faire, le page ranking analyse les liens hypertextes qui existent entre les pages web à classer. Supposons que toutes pages web qui constituent le site web à traiter sont numérotées par un nombre naturel. Le classement est effectué sur base d une matrice M qui compte le nombre de liens existant entre toute paire de pages i et j. Donc, s il y a, sur la page i, trois liens qui, une fois cliqués, redirigent vers la page j, on aura M[i][ j] = 3. Cette information sera utilisée pour réaliser le classement : ce sont grosso modo 1 les pages vers lesquelles le plus de pages pointent qui seront jugées comme «les plus intéressantes», car ce sont celles que les autres sites référencent le plus. Comme l implémentation d un algorithme de page ranking complet est un gros travail, nous avons reparti les différentes étapes de cet algorithme sur plusieurs projets. Pour ce projet, nous vous demandons d écrire un programme qui reçoit une liste de fichiers contenant des pages web et crée une matrice M qui compte le nombre de liens existant entre toute paire de pages i et j. Pour cela, vous devrez ouvrir chaque page web, écrite en HTML, et la parcourir pour compter le nombre de références, dans cette page i, vers chacune des pages j. Ce compte se retrouvera en coordonnée (i, j) de la matrice M. Les étapes suivantes de l algorithme de page ranking feront l objet de projets ultérieurs (du cours de Programmation mais aussi du cours d Algorithmique). 2 La structure du fichier contenant la liste des pages à analyser Votre programme devra ouvrir un fichier appelé listepages.txt. Ce fichier est un fichier texte. Chacune de ses lignes donne le nom d un fichier qui contient une page web à analyser. Votre programme devra analyser toutes les pages web fournies dans listepages.txt. Voici un exemple de fichier : chemin_fichier_1.html chemin_fichier_2.html 1 Ceci sera précisé plus tard. 1

chemin_fichier_3.html chemin_dernier_fichier.html Pour lire un fichier ligne par ligne, vous pouvez faire appel à la méthode getline(). Celle-ci peut s appliquer à un objet de type ifstream, et reçoit deux arguments : un tableau T et un entier i. Elle lit, sur le fichier qui correspond au ifstream, la prochaine ligne, et la stocke dans le tableau T. Si cette ligne contient plus de i caractères, seuls les i-1 premiers caractères sont lus. Cette méthode permet d éviter de devoir lire les lignes caractère par caractère (comme dans le projet précédent). Voici un exemple, ou MAX_SIZE_URL est une constante suffisamment grande : ifstream file; char path[max_size_url]; file.open("listepages.txt"); file.getline(path,max_size_url); // exemple d'appel à la fonction getline() 3 Les tables et matrices utilisées pour le projet Dans ce projet vous aurez deux tables à gérer. La première table est stockée dans la matrice char L[MAX_NB_LINK][MAX_SIZE_URL]. Chaque ligne de cette table est donc une chaîne de caractères, et contient le nom d un lien HTML. Vous devrez stocker dans L tous les liens rencontrés lors de votre analyse : que ce soit dans le fichier listepages.txt ou lors de l analyse des pages HTML elles-mêmes. Cette table permettra d attribuer un numéro à chaque page. Par exemple, si la chaîne http://www.ulb.ac.be est stockée dans le i e ligne de la table, alors i sera l identifiant unique du site http://www.ulb.ac.be. Il faut donc s arranger pour qu un même lien n apparaisse pas deux fois dans la table. Cette table devra être construite au fur et à mesure de la rencontre des différents liens. Si vous ouvrez une nouvelle page pour l analyser vérifiez si cette dernière est dans la table. Si elle y est, récupérez son indice dans la table qui fait office d index dans la matrice, sinon ajoutez la en fin de table et récupérez l indice à l insertion. Identiquement, si vous rencontrez un lien dans un fichier, récupérez son indice dans la table si le lien a déjà été inséré dans celle-ci, sinon ajoutez la. La seconde table correspondra à la matrice M décrite dans l introduction. Cette matrice sera de taille n n où n est le nombre de pages rencontrées lors de l analyse. Chaque case de M[i][ j] devra contenir le nombre de liens de la page numéro i vers la page numéro j. Les indices i et j sont obtenus à l aide de la matrice L. Ainsi, si la page A.html contient 4 liens vers B.html, que les chaînes «A.html» et «B.html» apparaissent respectivement aux lignes 9 et 3 de L, on aura M[9][3] = 4. Vous retrouverez en FIG. 1 un exemple de chacune des deux tables. Veillez à bien définir vos constantes MAX_NB_LINK et MAX_SIZE_URL de manière à ce que les tables L et M soient suffisament grandes pour accueillir toute l information demandée. Par ailleurs, la matrice M devra être déclarée double, et ce, même si elle ne doit contenir que des entiers. Ceci sera nécessaire pour réaliser les projets suivants. 4 Le langage HTML et la recherche de liens dans les pages Les pages que vous allez parcourir sont écrites en HTML. Le langage HTML permet de décrire la structure de pages sur internet. Pour cela elle utilise des balises. Une balise est décrite par un crochet 2

0 1 2./chemin_fichier_1.html./chemin_fichier_2.html http://www.w3c.org 0 M = 0 1 2 1 0 2 1 1 0 fichier 1.html fichier 2.html w3c.org FIG. 1 Exemple montrant la table des liens à gauche et la matrice correspondante à droite ouvrant (<) et un crochet fermant (>) ainsi que le nom de la balise (qui correspond généralement à sa fonction dans la structure). Par exemple la balise <p> permet de dire que ce qui va suivre correspond à un paragraphe. Toutefois pour certaines balises dites ouvrantes, il leur faut une balise fermante. Elles permettent ainsi de délimiter l action de la balise ouvrante correspondante (Par exemple </p> définit la fin du paragraphe commencé par <p>). Une balise peut définir des attributs. Par exemple une image peut avoir un attribut alt pour un texte alternatif qui permet d afficher, à la place de l image, le texte de l attribut dans le cas d une navigation à travers un navigateur texte, par exemple. Ces attributs, entourés de doubles guillemets, se trouvent après le texte nommant la balise et avant le crochet fermant. Si nous reprenons l exemple cité, cela nous donne <img alt="texte alternatif" />. La balise qui nous intéresse dans ce projet, c est la balise qui définit les liens entre deux pages HTML. Cette balise est la balise <a href="lien">contexte Cliquable</a>. Dans la plupart des cas, le contexte cliquable apparaît comme un texte souligné cliquable qui permet d accéder à la page HTML dont le nom est donné entre les guillemets, après href= 2. Voici deux exemples de tels liens 3 <a href="http://adresse_page_web" > lien visible </a> <a href="chemin_du_fichier" > lien visible </a> Enfin, remarquez qu il existe également une variante des liens <a href=""> dans laquelle le nom du lien est suivi par une chaîne commençant par #, comme dans l exemple ci-dessous : <a href="chemin_du_fichier#ancre" > lien visible </a> Dans ce cas, le # et tout ce qui suit jusqu au guillemet fermant doit être ignoré. Remarque importante Nous avons décrit les balises en utilisant des lettres minuscules, car c est la manière la plus standard d écrire du HTML. Néanmoins, il se pourrait que les balises soient écrites 2 Remarquez qu il existe aussi de balises <a name=>, mais nous ne les exploiterons pas ici. 3 Dans le premier cas, l adresse commence par http, c est donc une adresse sur le web. Dans le second cas, il n y a pas de http et il s agit donc d un nom de fichier. Votre programme doit se comporter de la même manière dans les deux cas. 3

en majuscules : <A HREF=""> par exemple. Votre programme doit être capable de gérer les deux cas! Il peut donc être utile d écrire une fonction qui convertit une chaîne de caractère en majuscules ou en minuscules... 5 La comparaison entre deux chaînes de caractères Avant de mettre à jour la matrice de comptage, il faut d abord vérifier si le lien trouvé existe déjà dans la table des liens. S il existe dans cette table, alors il suffit de récupérer son index, et de l utiliser en conjonction avec l index du fichier courant lu pour incrémenter le nombre de liens dans la matrice. Sinon, il faut introduire ce lien en bout de table et renvoyer l index de son insertion, et puis à nouveau mettre à jour la matrice comme il faut. Pour effectuer ces comparaisons, vous pouvez utiliser int strcmp(const char* s1, const char* s2), une fonction définie dans la bibliothèque <cstring>. Si la valeur renvoyée est égale à 0, alors les chaînes sont identiques. Dans ce projet vous l utiliserez comme suit : #include <cstring> using namespace std ; double M[MAX_NB_LINK][MAX_NB_LINK]; char L[MAX_NB_LINK][MAX_SIZE_URL]; int resultat; resultat = strcmp(l[i],lien); if (resultat == 0) {} // les chaines sont identiques 6 Le Projet Nous vous demandons dans ce projet de construire les deux tables décrites plus haut au travers de la fonction : cptliens(char L[MAX_NB_LINK][MAX_SIZE_URL], double M[MAX_NB_LINK][MAX_NB_LINK]) qui ouvre le fichier listepages.txt et remplit les matrices L et M tel que décrit ci-dessus. Nous vous demandons également d écrire une fonction : affiche(char L[MAX_NB_LINK][MAX_SIZE_URL], double M[MAX_NB_LINK][MAX_NB_LINK]) Elle affichera de la manière la plus efficace et cohérente possible les deux tables créées et manipulées par la fonction précédente. Exemple fourni Un exemple de site web, accompagné d un fichier listepages.txt est disponible sur la page web des TPs, sous forme d une archive zip. Vous pouvez vous en servir pour tester votre solution. 4

6.1 Rapport Nous vous demandons de rédiger un bref rapport décrivant les choix faits pour votre implantation du système et une justification de ces choix. Pour vous aider à rédiger ce rapport, nous vous conseillons de lire le document intitulé Élément de rédaction scientifique en informatique, qui est disponible à l adresse http://tinyurl.com/yzzpafd. Dans l évaluation de votre rapport, nous tiendrons particulièrement compte du caractère rigoureux et scientifique de votre présentation. Le document mentionné ci-dessous vous aidera à éviter certains pièges, et à soigner votre style de présentation. Les sections à lire tout particulièrement dans ce document sont les sections 2, 4 et 5 (les autres sections vous seront utiles pour des travaux ultérieurs). Attention, bien que ce document conseille l usage du traitement de texte LATEX, nous ne vous l imposons pas, et vous restez donc libre d utiliser un logiciel comme Word ou OpenOce Writer. Consignes pour la remise du projet À respecter scrupuleusement! 1. Votre projet doit comporter votre nom et votre numéro de groupe. 2. Votre projet doit être dactylographié. Les projets écrits à la main ne seront pas corrigés (0/10). 3. Votre code doit être commenté. 4. Vous devez respecter les modalités de remise suivante : Date de remise : le 16 novembre 2009 Lieu : au Secrétariat «étudiants» du Département d Informatique, local 2N8.104 Heure : Avant 16h Le secrétariat ferme à 16h. Après 16h, les projets sont considérés comme en retard, et vous perdez 1 point sur votre note finale (un point supplémentaire par jour de retard). Les projets en retard doivent être déposés dans la caisse prévue à cet effet près du secrétariat. 5