Partage
  • Partager sur Facebook
  • Partager sur Twitter

Regex en python

Sujet résolu
    18 janvier 2011 à 1:58:51

    Bonjour, en faite voilà j'ai un gros prob en python !!

    J'essaye disons un peu malgré moi d'utiliser les regex , le problème c'est que je n'y comprend absolument rien donc vous inquiétez pas si je vous pose des questions toujours sur le même post !!

    En faite voilà le problème que je rencontre à l'heure actuel j'aimerait développer un regex qui permettent de supprimer ce qu'il y a à l'extérieur de balise imaginer

    <body><script> ....</script></body>

    Voilà en faite j'aimerait pouvoir récupérer juste le content dans la balise script js !!

    Eh la passer sur une autre variable !!

    Merci de votre compréhension cordialement ,
    Tsunaiken
    • Partager sur Facebook
    • Partager sur Twitter
      18 janvier 2011 à 2:05:17

      Salut,
      Si tu n'as qu'une seule balise tu peux utiliser la regex suivante :
      r = ".*?<script>(.*?)</script>.*"
      

      et récupérer ce qu'il y a dans les balises script en faisant :
      m = re.match(r, string)
      script = m.group(1)
      

      ici, string étant ton code html.
      Sinon, si tu as plusieurs scripts à récupérer, tu peux faire comme ceci :
      r = "<script>(.*?)</script>"
      scripts = re.findall(r, string)
      


      Edit : petit oubli dans la première regex et ajout de la deuxième solution.
      • Partager sur Facebook
      • Partager sur Twitter
        18 janvier 2011 à 12:16:58

        Si tu veux parser du xml/html, les regex ne sont pas une solution adaptée. Tu devrais plutôt aller chercher des librairies dédiées à ça, comme BeautilfulSoup (html) ou cElementTree (xml).
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          19 janvier 2011 à 20:02:22

          AMHA, tu ne devrai pas utiliser des regexps pour parser du xhtml car les regexps sont un gouffre au niveau des performances et elles sont compliquées. Tu ne devrait utiliser les regexps que si tu n'as pas le choix.

          Le html est un dérivé du xml, mais le problème et qu'il n'est pas rare de tomber sur des pages html présantant des erreurs... Il te faut donc un parser html qui soit tolérant aux erreurs, comme BeautifulSoup.

          Je ne me souviens plus de l'url du site de BeautifulSoup, mais je sais que c'est le premier résultat quand on tappe "BeautifulSoup" dans Google... En tout cas BeautifulSoup, est précisément concu pour tout ce qui concerne le parsage du html: tu ne devrais pas avoir de mal à résoudre ton problème avec...

          Bon codage !
          • Partager sur Facebook
          • Partager sur Twitter
            22 janvier 2011 à 21:46:33

            Citation : Shaddan

            Salut,
            Si tu n'as qu'une seule balise tu peux utiliser la regex suivante :

            r = ".*?<script>(.*?)</script>.*"
            




            Puisqu'une balise peut s'écrire comme ceci <script type="text/javascript"></script> <!-- Ou encore comme ceci --> javascript:, il faut penser à modifier la regex en conséquence à moins d'avoir déjà vérifié la source web de la cible
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              29 janvier 2011 à 14:28:41

              Salut,

              Voilà un exemple avec BeautifulSoup dans l'interpréteur interactif:
              >>> import BeautifulSoup
              >>> html = """
              ...     <!DOCTYPE html>
              ...     <head>
              ...        <title>Essai</title>
              ... 
              ...        <script>
              ...        document.write('<h1>Essai</h1>');
              ...        </script>
              ...        <script>
              ...        alert('Coin ! Coin !');
              ...        </script>
              ...        <script type="text/javascript" src="./js/script.js"></script>
              ...     </head>
              ...     <body>
              ...       <p>Lorem Ipsum...</p>
              ...     </body>
              ...     </html>
              ... """
              >>> document = BeautifulSoup.BeautifulSoup(html)
              >>> document.findAll('script')
              [<script>
                     document.write('<h1>Essai</h1>');
                     </script>, <script>
                     alert('Coin ! Coin !');
                     </script>, <script type="text/javascript" src="./js/script.js"></script>]
              >>> document.findAll('script')[0]
              <script>
                     document.write('<h1>Essai</h1>');
              </script>
              >>> document.findAll('script')[1]
              <script>
                     alert('Coin ! Coin !');
              </script>
              >>> document.findAll('script')[2]
              <script type="text/javascript" src="./js/script.js"></script>
              >>> document.findAll('script')[0].contents
              [u"\n       document.write('<h1>Essai</h1>');\n       "]
              >>> js = []
              >>> for i in document.findAll('script'):
              ...     js += i.contents
              ... 
              >>> js
              [u"\n       document.write('<h1>Essai</h1>');\n       ", u"\n       alert('Coin ! Coin !');\n       "]
              >>> print "".join(js)
              
                     document.write('<h1>Essai</h1>');
                     
                     alert('Coin ! Coin !');
                     
              >>> exit()
              


              Tu peux télécharger BeautifulSoup ici...

              Bon codage !
              • Partager sur Facebook
              • Partager sur Twitter
                7 février 2011 à 0:11:58

                Beautifulsoup , je connait pas ;) , en faite j'ai penser à développer un fonction qui passe caractère par caractère jusqu'à faire une suite de caractère ressemblant à ce que je cherche ensuite une variable enregistre le contenue dans un variables tout en passant chaque caractère au crible avant de tomber sur une suite !!

                Vous pensez que cela peu être bon ??
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  8 février 2011 à 17:50:25

                  À mon avis, ça serait assez compliqué à réaliser...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 février 2011 à 21:51:05

                    Citation : Skami 18

                    À mon avis, ça serait assez compliqué à réaliser...



                    Pas si compliqué, mais lourd surtout
                    • Partager sur Facebook
                    • Partager sur Twitter
                      8 février 2011 à 22:00:45

                      déjà fait , en tout cas reste quelque petite fautes à corriger !!!
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        9 février 2011 à 20:28:24

                        Citation

                        Beautifulsoup , je connait pas ;) , en faite j'ai penser à développer un fonction qui passe caractère par caractère jusqu'à faire une suite de caractère ressemblant à ce que je cherche ensuite une variable enregistre le contenue dans un variables tout en passant chaque caractère au crible avant de tomber sur une suite !!

                        Vous pensez que cela peu être bon ??



                        Non!
                        • Partager sur Facebook
                        • Partager sur Twitter
                          10 février 2011 à 1:15:42

                          Citation : fred1599

                          Citation

                          Beautifulsoup , je connait pas ;) , en faite j'ai penser à développer un fonction qui passe caractère par caractère jusqu'à faire une suite de caractère ressemblant à ce que je cherche ensuite une variable enregistre le contenue dans un variables tout en passant chaque caractère au crible avant de tomber sur une suite !!

                          Vous pensez que cela peu être bon ??



                          Non!




                          Porque ??
                          • Partager sur Facebook
                          • Partager sur Twitter
                            10 février 2011 à 1:23:55

                            Parce que. On t'a dit d'utiliser BeautifulSoup, pourquoi ne veux-tu pas le faire ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              10 février 2011 à 2:22:16

                              Ben je vais voir , lequel est le plus rapide ;) le moin gourmand aussi , ensuite j'aviserait , je préfère code un peu plus , du moment que je gagne en capacité !!
                              • Partager sur Facebook
                              • Partager sur Twitter
                                10 février 2011 à 2:25:03

                                Alors utilise BeautifulSoup. De toute façon tu ne feras pas mieux.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  10 février 2011 à 18:12:56

                                  En faite ce qui me gène , est que je charge , 117,8 Kio de fonction en python , alors que je ne vais pas avoir besoin de toute les fonctions , au pire je ferait le trie !!
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    10 février 2011 à 18:34:53

                                    Tu peux importer simplement les fonctions que tu souhaites dans un module

                                    from module import tafonction
                                    


                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      10 février 2011 à 23:16:10

                                      ça je sais , ce que j'ai dit faut que je fasse le trie , pour savoir qu'elle fonction vont mettre utile !!
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        11 février 2011 à 7:32:19

                                        Enfin en même temps avec les ordinateurs actuels je pense vraiment pas que ça risque grand chose avec 100ko de code en plus :euh:
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          11 février 2011 à 20:56:37

                                          En faite , je travail sur un assez gros système donc , chaque bits compte ^^ , je suis du genre parano !!

                                          Nan je blague !!
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Regex en python

                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                          • Editeur
                                          • Markdown