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 :

Parsing line html


Sujet :

Python

  1. #1
    Membre averti
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2021
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Roumanie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2021
    Messages : 24
    Par défaut Parsing line html
    salut. Je veux changer quelques lignes (parsing)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <title>Voiture</html>
     
    à
     
    <meta name="Subject" content="MERCY"/>
    pour DEVENIR:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <title>Voiture</html>
     
    à
     
    <meta name="Subject" content="Voiture"/>
    Mon code est presque bon, n'obtient aucune erreur, mais au lieu d'analyser, il supprime simplement d'autres lignes.

    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
    import requests
    import re
     
    english_folder1 = r"c:\test\test\2\1"
     
    extension_file = ".html"
     
    use_parse_folder = True
     
    import os
     
    en1_directory = os.fsencode(english_folder1)
     
    print('Going through english folder')
    for file in os.listdir(en1_directory):
        filename = os.fsdecode(file)
        print(filename)
        if filename == 'y_key_e479323ce281e459.html' or filename == 'TS_4fg4_tr78.html': #ignore this files
            continue
        if filename.endswith(extension_file):
            with open(os.path.join(english_folder1, filename), encoding='utf-8') as html:
                html = html.read()
     
                try:
                    with open(os.path.join(english_folder1, filename), encoding='utf-8') as en_html:
                        en_html = en_html.read()
     
     
                        try:
                            parse_1 = re.search('<title>.+</title>', html, flags=re.DOTALL)[0]
                            en_html = re.sub('<meta name="Subject" content=".+"/>', parse_1, en_html, flags=re.DOTALL)
                        except:
                            pass
     
     
     
                except FileNotFoundError:
                    continue
     
            print(f'{filename} parsed')
            if use_parse_folder:
                try:
                    with open(os.path.join(english_folder1+r'\parsed', 'parsed_'+filename), 'w', encoding='utf-8') as new_html:
                        new_html.write(en_html)
                except:
                    os.mkdir(english_folder1+r'\parsed')
                    with open(os.path.join(english_folder1+r'\parsed', 'parsed_'+filename), 'w', encoding='utf-8') as new_html:
                        new_html.write(en_html)
            else:
                with open(os.path.join(english_folder1, 'parsed_'+filename), 'w', encoding='utf-8') as html:
                    html.write(en_html)

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 181
    Par défaut
    hello,
    you have an error in your html : line with title must be :
    don't forget BeautifulSoup :

    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
    from bs4 import BeautifulSoup
    html_doc = """
    <html> 
    <title>Voiture</title>
    <meta name="Subject" content="MERCY">
    </meta>
    <body>
     <div class="somers">
        <a href="https://website/amadonperrish.html" class="flags bg" hreflang="bg" title="bk"></a>
        <a href="https://website.com/test-lofet.html" class="flags sk" hreflang="sk" title="sk"></a>
        <a href="https://website.com/mercy.html" class="flags uk" hreflang="uk" title="uk"></a>
     </div>
     </body>
    </html>
    """
    soup = BeautifulSoup(html_doc)
    titre = soup.find('title').text
    meta= soup.find('meta')
    meta['content']=titre
    result = str(soup)
    print(result)
    =>
    <html>
    <head>
    <title>Voiture</title>
    <meta content="Voiture" name="Subject"/>
    </head>
    <body>
    <div class="somers">
    <a class="flags bg" href="https://website/amadonperrish.html" hreflang="bg" title="bk"></a>
    <a class="flags sk" href="https://website.com/test-lofet.html" hreflang="sk" title="sk"></a>
    <a class="flags uk" href="https://website.com/mercy.html" hreflang="uk" title="uk"></a>
    </div>
    </body>
    </html>
    Ami calmant, J.P

  3. #3
    Membre averti
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2021
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Roumanie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2021
    Messages : 24
    Par défaut
    oui, dans mes dossiers, c'était bien <title>Voiture</title>.

    Mais mon code était presque bon aussi. J'ai trop galéré avec ce code. Je sais que le problème vient de ces deux lignes. Est-ce que quelqu'un peut m'aider?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    parse_1 = re.search('<title>.+</title>', html, flags=re.DOTALL)[0]
                            en_html = re.sub('<meta name="Subject" content=".+"/>', parse_1, en_html, flags=re.DOTALL)
    savez-vous comment corriger cette partie du code?

  4. #4
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 181
    Par défaut
    hello,
    tu peux essayer un truc comme cela :
    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
     
    import re
    html_doc = """<html> 
    <title>Voiture</title>
    <meta name="Subject" content="MERCY"/>
    <body>
     <div class="somers">
        <a href="https://website/amadonperrish.html" class="flags bg" hreflang="bg" title="bk"></a>
        <a href="https://website.com/test-lofet.html" class="flags sk" hreflang="sk" title="sk"></a>
        <a href="https://website.com/mercy.html" class="flags uk" hreflang="uk" title="uk"></a>
     </div>
     </body>
    </html>
    """
    title = re.search('<title>(.+)</title>', html_doc)
    en_html = re.sub(r'content=".+"/', 'content="'+title.group(1) + '"/',html_doc, flags=re.DOTALL)
    print(en_html)
    Ami calmant, J.P

  5. #5
    Membre averti
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2021
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Roumanie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2021
    Messages : 24
    Par défaut
    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
    from bs4 import BeautifulSoup
    import os
    import re
    path = r"c:\test\test\2"
    for filename in os.listdir(path):
        if filename.endswith(".html"):
            fullpath = os.path.join(path, filename)
     
     
     
    soup = BeautifulSoup(html_doc)
     
    title = re.search('<title>(.+)</title>', html_doc)
    en_html = re.sub(r'content=".+"/', 'content="'+title.group(1) + '"/',html_doc, flags=re.DOTALL)
    print(en_html)
    Je mets à jour ton code, mais j'ai une erreur


    https://snipboard.io/b6Yz5a.jpg

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 181
    Par défaut
    Désolé mais moi je n'aide plus ! Les messages d'erreur sont assez explicites et le premier message d'erreur ne correspond pas au code que l'on voit.

Discussions similaires

  1. Parsing source HTML
    Par Rian83 dans le forum Applets
    Réponses: 2
    Dernier message: 08/03/2010, 08h31
  2. Parsing d'HTML en Flex
    Par AsTeR_ dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 13/08/2008, 12h04
  3. Réponses: 13
    Dernier message: 03/09/2007, 23h21
  4. Parse code HTML avec PHP
    Par naourass dans le forum Langage
    Réponses: 3
    Dernier message: 19/05/2006, 08h12

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