Travail sur Python

Le but de cette partie sur Python est de récupérer le code source d'une page html, nettoyer le code source à l'aide d'expressions régulières, générer un fichier de résultat contenant le code source nettoyé,opérer des décomptes sur le texte et générer un fichier de résultat contenant les résultats des décomptes.

    Mon programme va se dérouler en 5 étapes:

    1. Récupération du code source d'une page web
    2. Voici la page web choisie: cliquez ici

      Les deux premières lignes sont techniques: elles expliquent où se trouve Python et quel encodage est utilisé. Ici, ce sera en utf-8. 

      La troisième permet l'importation grâce à la fonction import d'un nouveau module "urllib", celle-ci contient des commandes pour intéragir avec les URL.

      Ensuite, avec la fonction urlopen, on ouvre une nouvelle page web. Le résultat de cette commande est stockée dans une nouvelle variable qu'on appelle "url", qui est une sorte de connexion avec la page que nous avons ouverte.
      On lit la page entière et on stocke le résultat dans une nouvelle variable qu'on appelle codehtml. Cette variable contient maintenant le code de la page entière.

      Pour voir ce qu'elle contient il faut écrire : print codehtml

    3. Ecrire la page dans un fichier local
    4. La première ligne permet d'ouvrir un nouveau fichier. La fonction "open" prend deux arguments: le nom du fichier (ici,pageweb.txt)et le mode d'ouverture (ici, "w" comme write).

      La deuxième ligne permet d'écrire ce que l'on veut dans ce fichier, et ce qui nous intéresse ici c'est le contenu de la variable "codehtml".

      On n'oubliera pas de fermer le fichier par la suite.

      Résultat : voici le code source

    5. Nettoyage du code html à l'aide d'expressions régulières
    6. Pour nettoyer le code source d'une page html, on utlise les expressions régulières. Les expressions régulières sont des formules qui ont une syntaxe particulière et qui participent au filtrage de données textuelles.

      La fonction re.sub permet de faire des remplacements dans un texte. Elle possède une syntaxe particulière:

      re.sub("ce que je veux remplacer","par quoi je veux remplacer","dans quoi je veux remplacer")

      Résultat : voici la page web nettoyée

    7. Récupération d'un fichier de sortie
    8. On crée un nouveau fichier de sortie qui contient le texte nettoyé puis on ferme le fichier nouvellement créé.

    9. Comptage de caractères et de mots

  • Point important : "len()" calcule la longueur d'une liste

    "str()" fait une chaine de caractères d'un nombre

    La fonction len renvoie un entier (integer). Pour afficher ce résultat il faut employer la fonction str pour transformer le nombre en chaîne de caractères.

  • On va donc utiliser la fonction len sur la variable texte pour obtenir le nombre de caractères et écrire le résultat dans le fichier de sortie.
  • Nous allons ajouter une liste des mots à notre page. Pour cela nous utilisons la fonction "split" du module "re".

    Il faut utiliser la formule suivante : re.split(pattern, string[, maxsplit=0])

    "\W+" est l''expression régulière qui permet de couper les mots. \W correspond à un caractère quelconque, qui n'est pas alpha-numérique : cela inclut donc des espaces ou des symboles. Le + signifie "1 ou plus". On cherche donc des coupures où il y a 1 ou plus caractères non-alphanumériques.

  • La fonction "join" est une fonction qui "joint" les éléments d'une liste avec le caractère qui précède, ici un espace.
  • Pour savoir combien de mots différents le texte contient, on transforme la liste en un ensemble (set en anglais). Un ensemble ne peut contenir un élément qu'une fois.
  • Pour ordonner le résultat par ordre alphabétique, il suffit d'ajouter "sorted" devant l'ensemble.
  • Pour trier les instances du même mot écrites en majuscule et minuscule ensemble, on peut ajouter un 2e argument à "sorted" :key=str.lower
  • On souhaite ajouter la fréquence à chaque mot. Pour cela, il faut d'abord disposer de la liste ordonnée des mots différents, on l'appelle listeord .
  • Ensuite, on va créer un dictionnaire,appelé dicoFreq, qui va contenir des couples : (mot, fréquence). Il faut d'abord initialiser un dictionnaire vide: dicoFreq = {}
    Le but est ici d'incrémenter la valeur de la fréquence du mot à chaque fois que ce mot est écrit dans le texte.
    Si le mot n'existe pas déjà dans le dictionnaire, alors il prend la valeur de 1 ; sinon, il existe et on lui incrémente sa valeur (ajout de 1 à sa valeur précédente)

    On aura alors à la fin une liste de formes et leur nombre d'occurrences associées. On parcourt donc la listeord pour récupérer les mots.

  • Pour finir, on crée un fichier de sortie qui trie la sortie du dicoFreq et on n'oublie pas de fermer le fichier ouvert.

    Résultat : voici les statistiques obtenues ainsi que mon script python final.