Pour la résolution des anagrammes, il nous faut une liste de mots, ou mieux, une liste exhaustive des mots de la langue française de 3 à 7 lettres. Après quelques recherches, je n’ai pas réussi à mettre la main sur un tel fichier, mais par chance, je suis tombé sur le blog d’une personne ayant les mêmes besoins que les miens : Wouf. J’ai décidé d’utiliser son code comme point de départ pour créer le fichier nécessaire à mon but : le badge d’Académicien dans le « Jardin des mots » !

Pour que le code de Wouf fonctionne, il faut, au préalable, avoir installé les modules suivant : beautifulsoup4, requests et html5lib. Avec les commandes :

  • pip install beautifulsoup4
  • pip install requests
  • pip install html5lib
#wouf 2018 (py3.6.4)
#http://site2wouf.fr
#Pour créer dico.txt
#Qui contient un lexique basé sur
#ODS7
#En scollant le site : listesdemots.net
#requis :l beautifulsoup4
#(cmd : pip install beautifulsoup4)
 
import requests
from bs4 import BeautifulSoup
fichier = open("dico.txt", "w")
 
#   Initialisation:
url="https://www.listesdemots.net/touslesmots"
requete = requests.get(str(url+".htm")) #page1
print(requete.url)
page = requete.content
 
soup = BeautifulSoup(page,features="html5lib")
span = soup.find("span", {"class": "mot"})
mots=span.string.strip()
lesmots=mots.split(" ")
for l in lesmots:
    fichier.write(l+"\n")
    print("|",end="")
print()
print("page 1 : OK ("+str(len(lesmots))+")")
totalmot=len(lesmots)
fichier.close()
#page 2 à 8998:
for i in range(2,899):
    fichier = open("dico.txt", "a")
    lurl=url+"page"+str(i)+".htm"
    ok=False
    while not ok:
        try:
            requete = requests.get(lurl,timeout=1)
            ok=True
        except:
            print("Problème de connexion. Je recommence !")
    print(requete.url)
    page = requete.content
    soup = BeautifulSoup(page,features="html5lib")
    span = soup.find("span", {"class": "mot"})
    mots=span.string.strip()
    lesmots=mots.split(" ")
    for l in lesmots:
        fichier.write(l+"\n")
        print("|",end="")
    totalmot+=len(lesmots)
    print()
    print("page "+str(i)+" : OK ("+str(len(lesmots))+"/"+str(totalmot)+")")
    fichier.close()
#fin du scipt:
  
 
print("mots :",totalmot)

Grâce à Wouf, nous voici en possession d’un fichier comportant plus de 400000 mots de la langue française. La prochaine étape sera de ne garder que les mots qui nous intéressent, et les mettre sous une forme rapidement attaquable pour nos besoins.

Cet article a 1 commentaire

Laisser un commentaire

Fermer le menu