IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Extraire seulement le texte pertinent d'une page web ?


Sujet :

Python

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    388
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 388
    Points : 172
    Points
    172
    Par défaut Extraire seulement le texte pertinent d'une page web ?
    Bonsoir,

    J'ai utilisé Python et BeautifulSoup dans le but d'extraire du texte lisible (extraire seulement la définition du mot dans le but de constituer un dictionnaire sous forme de corpus).
    Mais voilà, j'ai dû étudier la structure de chaque page web pour pouvoir scraper le bon texte (car il peut se trouver dans une div x ou une div y ...), ce n'est pas optimal, ce n'est pas un bon code pour moi. Le nettoyage que j'ai fait n'est pas du tout optimal car les pages web que j'aurais à scraper sont très nombreuses.

    Je souhaite savoir s'il n'y a pas une autre solution pour le nettoyage du texte, une solution commune à toutes les pages web.

    Voilà à quoi ressemble mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    ### ------Erreurs 404 -----------------
                # Dans head
                h1Tag = soup2.h1
                maListe = str(h1Tag).split(" ")
                maListeNonPertinente = ["404","trouvée</h1>","Error", "<h1>Forbidden</h1>","Forbidden</h1>","404</h1>","...</h1>","Forbidden"]
                for element in maListeNonPertinente :
                    if element in maListe:
                        print('ERREUR 404')
                        cpt = cpt+1
    #--------------------------------------
     
                    ### WIKTIONARY
                    pwiktionary = ''
                    key = "ol"
                    try:
                        for txt in soup2.findAll('div',{'id':'mw-content-text'}):
                            pwiktionary = txt.findAll('ol')
                            pwiktionary = pwiktionary[0].get_text()
                    except:
                        print
                    #------------------------------------------
     
                    #### LAROUSSE
                    plarousse = ''
                    for p in soup2.findAll('ul',{"class":"Definitions"}) :
                        plarousse = p.get_text()
     
     
                    #--------------------------------------------
                    cnrtl = ''
                    #### CNRTL
                    for art in soup2.findAll('div',{"id":"contentbox"}):
                        cnrtl = art.get_text()
     
                    #-----------------------------------------------
     
                    lint = ''
                    #### LINTERNAUTE
                    for sec in soup2.findAll('section',{"class":"grid_line dico_definition tabsContent jContentDefinition"}):
                        lint = sec.get_text()
     
     
                    ### AMELIORER SA SANTE
                    amel = ''
                    for art in soup2.findAll('div',{"class":"headline-article"}):
                        amel = art.get_text()
     
     
                    ### MR-PLANTES.COM
     
                    # Supprimer le p 
                    for p in soup2.findAll('p',{"class":"postmetadata"}):
                        p.extract()
     
                    for a in soup2.findAll('p',{"a":"href"}):
                        a.extract()
    Et il y a encore d'autres pages, je n'ai pas tout mis.
    J'ai essayé aussi d'éliminer le bruit (erreur 404), code qui est aussi mal fait. J'essaie de savoir si par exp. Error, 404 ... ne sont pas dans le title sauf que j'ai dû garder d'autres mots parce que je ne prends en compte que l'espace entre mots. Je dois améliorer ça pour dire que si 404, Erreur, Error... ce sera plus clair. Je ne sais pas encore comment séparer d'abord tous les mots de sorte qu'il y ait un espace entre chaque mot pour pouvoir faire un bon test.


    Merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par geeka Voir le message
    Mais voilà, j'ai dû étudier la structure de chaque page web pour pouvoir scraper le bon texte (car il peut se trouver dans une div x ou une div y ...), ce n'est pas optimal, ce n'est pas un bon code pour moi. Le nettoyage que j'ai fait n'est pas du tout optimal car les pages web que j'aurais à scraper sont très nombreuses.

    Je souhaite savoir s'il n'y a pas une autre solution pour le nettoyage du texte, une solution commune à toutes les pages web.
    Avant d'essayer de coder un truc pareil, il faut regarder l'état de l'art (i.e. ce que les "anciens" ont déjà essayé de faire pour construire des solutions à ce genre de problème). De nos jours, ce n'est pas si compliqué: un peu de recherche sur Internet...
    Cela permet d'appréhender la complexité (et les limites) des solutions commerciales et open-source existantes (qu'il faut déjà avoir utilisé pour être sûr qu'on pourra faire (un peu) mieux avec ses (petits) moyens).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/08/2011, 14h23
  2. Texte défilant sur une page web
    Par powerweb dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/11/2010, 12h15
  3. Récupérer seulement le texte d'une page Web
    Par amelia dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 20/02/2010, 23h13
  4. lire le texte brut d'une page web
    Par arketip dans le forum Réseau/Web
    Réponses: 11
    Dernier message: 14/04/2009, 15h54
  5. [COM] Affichage de texte RTF dans une page web
    Par marieannette dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 24/02/2009, 10h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo