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 :

Récupération d'une chaine de caractères dans une page web/HTML


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 17
    Points : 8
    Points
    8
    Par défaut Récupération d'une chaine de caractères dans une page web/HTML
    Bonjour,

    Mon problème en soi est simple à comprendre mais je n'arrive pas à lui trouver une solution.

    En fait j'ai déjà un script en python qui fait déjà ce que je veux faire mais pour un site disons "simple" :

    Voilà une partie de ce script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    !/usr/bin/python
    # -*-coding:Utf-8 -*
    # importation des librairies
    import smtplib
    import urllib
    import os.path
    Ci-dessous la partie que je dois modifier pour pouvoir l'utiliser sur mon autre site :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # recuperation adresse IP publique
    texte = urllib.urlopen("http://www.monip.org").read()
    ip_public = texte.split('IP : ')[1].split('<')[0]
     
    # Tests (A effacer par la suite)
    print "La variable texte contient : ", texte
    print "La variable ip_public contient : ", ip_public
    Résultat obtenu :

    pi@raspberrypi:~/programmation/python$ ./envoiMdpVpnBook.py
    La variable texte contient : <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>MonIP.org v1.0</title>
    <META http-equiv="Content-type" content="text/html; charset=ISO-8859-1">
    </head>
    <P ALIGN="center"><FONT size=8><BR>IP : xx.xx.xx.xx<br></font><font size=3><i>ABordeaux-654-1-236-32.wxx-xx.abo.wanadoo.fr</i><br></font><font size=1><br><br>Pas de proxy d▒tect▒ - No Proxy detected</font></html>

    La variable ip_public contient : xx.xx.xx.xx
    En bref, le script récupère une adresse IP dans une page HTML qu'il stocke ensuite dans un fichier texte en local puis toute les heures l'adresse IP du site est comparée à celle se trouvant dans mon fichier texte et si celle du site est différent elle est copié dans le fichier texte et envoyer sur ma boite mail.

    ps : je n'ai pas affiché le reste du script pour éviter de surcharger mais si des personnes sont intéressées je peux le partager.

    Ce script fonctionne parfaitement bien, c'est pourquoi je compte le réutiliser.

    Pour en venir à mon problème, voilà ce que j'obtiens pour un autre site plus "lourd" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/usr/bin/python
    # -*-coding:Utf-8 -*
    # importation des librairies
    import smtplib
    import urllib
    import os.path
     
    # recuperation adresse IP publique
    texte = urllib.urlopen("http://www.vpnbook.com/freevpn").read()
    ip_public = texte.split('Password: ')[1].split('<')[0]
     
    # Tests (A effacer par la suite)
    print "La variable texte contient : ", texte
    print "La variable ip_public contient : ", ip_public
    Résultat :

    La variable texte contient : <!DOCTYPE html>
    <!--[if lt IE 7 ]><html class="ie ie6 no-js" lang="en"> <![endif]-->
    <!--[if IE 7 ]><html class="ie ie7 no-js" lang="en"> <![endif]-->
    <!--[if IE 8 ]><html class="ie ie8 no-js" lang="en"> <![endif]-->
    <!--[if IE 9 ]><html class="ie ie9 no-js" lang="en"> <![endif]-->
    <!--[if (gte IE 9)|!(IE)]><!--><html class="no-js" lang="en"> <!--<![endif]-->
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

    <title>Free VPN Accounts &bull; 100% Free PPTP and OpenVPN Service</title>
    <meta name="description" content="Free VPN Service &ndash; VPNBook.com is the #1 premium Free VPN Server account provider. US, UK, and offshore VPN servers available.">
    <meta name="keywords" content="free vpn, free vpn service, free vpn server, free vpn account, openvpn, pptp vpn, web proxy" />
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">

    <link rel="stylesheet" href="/css/skeleton-v1.1.css">
    <link rel="stylesheet" href="/css/flexslider-v1.8.css">
    <link rel="stylesheet" href="/css/main-r6.css?0211">
    <link rel="stylesheet" href="/css/media-queries-r6.css">
    <link rel="stylesheet" href="/css/sprites-r6.css">
    <link rel="stylesheet" href="/css/theme-default-r6.css">
    <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,600,400italic' rel='stylesheet' type='text/css'>

    <link rel="shortcut icon" href="/images/favicon.ico">
    <link rel="apple-touch-icon" href="/images/apple-touch-icon.png">
    <link rel="apple-touch-icon" sizes="72x72" href="/images/apple-touch-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="114x114" href="/images/apple-touch-icon-114x114.png">

    <!-- Allow IE to render HTML5 -->
    <!--[if lt IE 9]>
    <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

    <script>
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
    ga('create', 'UA-40096058-1', 'vpnbook.com');
    ga('send', 'pageview');
    </script>

    </head>

    <body>
    <div id="main" role="main">

    <header>
    <div class="container">
    <h1 class="logo one-third column alpha">
    <a href="/">
    <img src="/images/logo.png" alt="Free VPN" class="scale-with-grid" />
    <img src="/images/logo-mobile.png" class="scale-with-grid mobile-only" alt="" /><!-- Alternative image for mobile devices -->
    </a>
    </h1>

    <nav class="menu two-thirds column omega">
    <ul>
    <li><a href="/" >VPNBook<br /><span>news</span></a></li>
    <li><a href="/freevpn" class='active'>Free VPN<br /><span>accounts</span></a></li>
    <li><a href="/webproxy" >Free Web<br /><span>proxy</span></a></li>
    <li><a href="/howto" >How-To<br /><span>setup</span></a></li>
    <li><a href="/features" >Features<br /><span>service</span></a></li>
    <li><a href="/contact" >Privacy<br /><span>contact</span></a></li>
    </ul>
    </nav>
    </div><!-- .container -->

    <div class="bottom-gradient">
    <span class="left"></span>
    <span class="center"></span>
    <span class="right"></span>
    </div>
    </header>

    <article id="pricing">
    <div class="container">

    <div class="sixteen columns titleset">
    <h2 class="remove-bottom">Free VPN</h2>
    <h6 class="subheader">PPTP and OpenVPN Accounts<br>&nbsp;</h6>

    <div class="align-center adsense">
    <script type="text/javascript"><!--
    google_ad_client = /* Vpnbook LB-1 */
    "ca-pub-3860002410887566";
    google_ad_slot = "5227255820";
    google_ad_width = 728;
    google_ad_height = 90;
    //-->
    </script>
    <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
    </div>
    </div>

    <div class="one-third column">
    <div class="headset price clearfix">
    <img src="/images/empty.gif" alt="" class="large-icons icon-font" />
    <h4>Free PPTP VPN</h4>
    <span><sup>$</sup>0<sub>/mo</sub></span>
    </div>
    <div class="bottom-gradient add-top add-bottom">
    <span class="left"></span>
    <span class="center"></span>
    <span class="right"></span>
    </div>
    <p>PPTP (point to point tunneling) is widely used since it is supported across all Microsoft Windows,
    Linux, Apple, Mobile and PS3 platforms. It is however easier to block and might not work if your ISP or
    government blocks the protocol. In that case you need to use OpenVPN, which is impossible to detect or block.</p>

    <ul class="disc">
    <li><strong>euro195.vpnbook.com</strong></li>
    <li><strong>euro213.vpnbook.com</strong></li>
    <li><strong>us1.vpnbook.com</strong> <span class="red">(US VPN - optimized for fast web surfing; no p2p downloading)</span></li>
    <li><strong>us2.vpnbook.com</strong> <span class="red">(US VPN - optimized for fast web surfing; no p2p downloading)</span></li>
    <li><strong>ca1.vpnbook.com</strong> <span class="red">(Canada VPN - optimized for fast web surfing; no p2p downloading)</span></li>
    <li><strong><strike>uk180.vpnbook.com</strike></strong> <span class="red">(Retired)</span></li>
    <li>Username: <strong>vpnbook</strong></li>
    <li>Password: <strong>guSpUda8</strong></li>
    </ul>

    <div><strong><span class="green"> More servers coming. Please Donate.</span></strong></div>

    </div><!-- .columns -->


    <div class="one-third column box light featured">
    <div class="headset price clearfix">
    <img src="/images/empty.gif" alt="" class="large-icons icon-font" />
    <h4>Free OpenVPN <br><small>(Recommended)</small></h4>
    <span><sup>$</sup>0<sub>/mo</sub></span>
    </div>

    <div class="bottom-gradient add-top add-bottom">
    <span class="left"></span>
    <span class="center"></span>
    <span class="right"></span>
    </div>

    <p>OpenVPN is the best and most recommended open-source VPN software world-wide. It is the most secure VPN option.
    You need to download the open-source <a href="/howto">OpenVPN Client</a> and our configuration and certificate bundle
    from the links below (use TCP if you cannot connect to UDP due to network restriction).</p>

    <ul class="disc">
    <li><a href="/free-openvpn-account/VPNBook.com-OpenVPN-Euro1.zip">Euro1 OpenVPN Certificate Bundle</a> </li>
    <li><a href="/free-openvpn-account/VPNBook.com-OpenVPN-Euro2.zip">Euro2 OpenVPN Certificate Bundle</a> </li>
    <li><a href="/free-openvpn-account/VPNBook.com-OpenVPN-US1.zip">US1 OpenVPN Certificate Bundle</a> <span class="red">(optimized for fast web surfing; no p2p downloading)</span></li>
    <li><a href="/free-openvpn-account/VPNBook.com-OpenVPN-US2.zip">US2 OpenVPN Certificate Bundle</a> <span class="red">(optimized for fast web surfing; no p2p downloading)</span></li>
    <li><a href="/free-openvpn-account/VPNBook.com-OpenVPN-CA1.zip">CA1 OpenVPN Certificate Bundle</a> <span class="red">(optimized for fast web surfing; no p2p downloading)</span></li>
    <li><strike>UK OpenVPN Certificate Bundle</strike> <span class="red">(Retired)</span></li>
    <li>All bundles include UDP53, UDP 25000, TCP 80, TCP 443 profile</li>
    <li>Username: <strong>vpnbook</strong></li>
    <li>Password: <strong>guSpUda8</strong></li>
    </ul>
    <a class="button featured animate">Choose an OpenVPN Server from above</a>
    </div><!-- .columns -->

    <div class="one-third column">
    <div class="headset price clearfix">
    <img src="/images/empty.gif" alt="" class="large-icons icon-burst" />
    <h4>Donate</h4>

    </div>
    <div class="bottom-gradient add-top add-bottom">
    <span class="left"></span>
    <span class="center"></span>
    <span class="right"></span>
    </div>

    <div class="align-center" id="paypalDonate">
    <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
    <input type="hidden" name="cmd" value="_s-xclick">
    <input type="hidden" name="hosted_button_id" value="NNED7R4DHDB9L">
    <input type="image" src="/images/donate.png" border="0" name="submit" alt="Donate">
    <img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
    </form>
    </div>

    <div class="align-center">
    <br />
    <strong>Bitcoin Donation</strong>
    <br />
    <small>1FFExjn6sm2oMZ2LJsTtn1t8uXW6EE7HQ7</small>
    </div>

    <div class="socialMediaContainer2">
    <div class="plusoneButton"><g:plusone size="tall" href="http://www.vpnbook.com"></g:plusone></div>
    <div class="facebookButton"><div id="fb-root"></div><fb:like href="http://www.vpnbook.com" send="false" layout="box_count" width="65" show_faces="false" font="arial"></fb:like></div>
    <div class="twitterButton"><a href="http://twitter.com/share" rel="nofollow" class="twitter-share-button" data-url="http://www.vpnbook.com" data-text="VPNBook.com Free VPN Service" data-count="vertical">Tweet</a></div>
    </div>

    </div><!-- .columns -->

    <div style="clear:both;">&nbsp;</div>
    <div class="align-center adsense">
    <script type="text/javascript"><!--
    google_ad_client = /* Vpnbook LB-2 */
    "ca-pub-3860002410887566";
    google_ad_slot = "9781879828";
    google_ad_width = 728;
    google_ad_height = 90;
    //-->
    </script>
    <script type="text/javascript"
    src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
    </script>
    </div>

    </div><!-- container -->
    </article>

    </div><!-- #main -->

    <!-- share this code -->
    <!-- end share this -->
    <div id="share-icons">
    <div id="share-mask"></div>
    <div class="addthis_toolbox addthis_default_style addthis_32x32_style">
    <a class="addthis_button_facebook"></a>
    <a class="addthis_button_twitter"></a>
    <a class="addthis_button_linkedin"></a>
    <a class="addthis_button_google_plusone"></a>
    <a class="addthis_button_compact"></a>
    </div>
    <script type="text/javascript" src="http://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4f92e19745ac6401"></script>
    <!-- AddThis Button END -->

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script>if(!window.jQuery) {document.write('<script src="/js/jquery-1.8.2.min.js"><\/script>');}</script>
    <script src="/js/jquery.flexslider-v1.8.min.js"></script>
    <script src="/js/jquery.ba-hashchange-v1.3.min.js"></script>
    <script src="/js/main-r6.js?051201"></script>
    <script type="text/javascript" src="http://apis.google.com/js/plusone.js"></script>
    <script src="http://connect.facebook.net/en_US/all.js#appId=221296744562462&amp;xfbml=1"></script>
    <script>!function (d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], p = /^http:/.test(d.location) ? 'http' : 'https'; if (!d.getElementById(id)) { js = d.createElement(s); js.id = id; js.src = p + '://platform.twitter.com/widgets.js'; fjs.parentNode.insertBefore(js, fjs); } }(document, 'script', 'twitter-wjs');</script>
    </body>
    </html>

    La variable ip_public contient :
    Désolé pour tout ce texte mais je n'ai pas trouvé comment le spoiler afin de ne l'afficher que sur demande.

    Comme vous pouvez le remarquer ça ne fonctionne pas.

    J'aimerais récupérer la ligne suivante :
    <li>Password: <strong>guSpUda8</strong></li>
    Et plus précisément le mot de passe qui est : guSpUda8

    ps : Attention, je ne sais si ça a une importance mais le MDP apparait deux fois dans la page HTML.

    J'ai essayer de regarder sur le net et pour le moment je n'ai rien trouvé de concluant mis à part plusieurs pistes que je n'ai pas eu le temps d'explorer pour le moment mis à part quelques unes.

    Je ne sais pas si je dois faire une liste de ces info pour rechercher dedans ensuite un peu comme dans ces exemples :
    http://python.developpez.com/cours/a...age_12#L12-B-6
    http://www.developpez.net/forums/d14...-split-python/

    Ou alors utilisé les regex comme dans ces exemples :
    http://www.developpez.net/forums/d12...onction-split/
    http://www.developpez.net/forums/d11...ation-accents/
    https://docs.python.org/2/library/re.html#re.split

    Ou encore d'autres exemples trouvés un peu partout :
    http://python.developpez.com/cours/D...ning_lists.php
    http://www.imarend.com/tutorials/Pyt...ython10FR.html
    http://www.jchr.be/python/manuel.htm#chaines

    Malgré toutes ces ressources trouvées sur le net je reste bloqué et c'est pourquoi je viens vous demander votre aide.

    Je ne sais pas si je dois partir sur la création d'une liste, ou utilisé regexp, ou autre ?
    Je pensais commencer par rechercher la ligne où se trouvait le mot "Password:" puis supprimer toutes les autres et ensuite extraire mon mot de passe de cette ligne.
    Mais c'est bien plus compliquer que ce que je pensais.

    Me voilà donc ici, parmi vous, expert en Programmation Python pour que vous m'aidiez dans la résolution de mon problème.

    Je remercie par avance toutes les personnes qui pourront m'aider et me conseiller.

    Bonne soirée.

    Cordialement,

    Julien.

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Je te conseille fortement le module lxml, pour l'avoir testé il est très performant.

    Tu peux utiliser par exemple la méthode xpath ...
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Membre à l'essai
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 11
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    On pourrait discuter d'une technique plus appropriée mais pour le problème technique précis que tu soulignes, l'erreur est ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <li>Password: <strong>guSpUda8</strong></li>
    Tu cherches "Password:" que tu trouves. Puis tu cherches "<", donc le mot de passe que tu récupères est " " (espace). Il faut donc que tu modifies tes critères de recherche pour pouvoir accéder au mot de passe.

    Je te conseille quand même de manipuler des hash de mot de passe plutôt que des mots de passe en clair.

Discussions similaires

  1. [MFC] Insertion d'une chaine de caractère dans une BD
    Par julien.nasser dans le forum MFC
    Réponses: 2
    Dernier message: 20/04/2006, 15h19
  2. Réponses: 2
    Dernier message: 26/11/2005, 13h44
  3. Récupérer une chaine de caractère dans une page
    Par BrunS dans le forum Langage
    Réponses: 3
    Dernier message: 15/11/2005, 14h28
  4. [String]Recherche d'une chaine de caractères dans une autre
    Par Crazyblinkgirl dans le forum Langage
    Réponses: 3
    Dernier message: 29/07/2004, 11h51
  5. recherche d'une chaine de caractère dans une données text
    Par jdeheul dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 17/06/2004, 16h35

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