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 :

problème de recherche de caractères dans page web [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de publiphobe
    Homme Profil pro
    entrepreneur
    Inscrit en
    Septembre 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : entrepreneur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2020
    Messages : 25
    Par défaut problème de recherche de caractères dans page web
    Bonjour tout le monde,

    J'ai écrit un petit code python qui fait une requête http GET sur une page web, et qui est censé me chercher une chaine de caractères, et me la renvoyer s'il la trouve. Mais j'obtiens un résultat vide (alors que le pattern est bel et bien dans le code source de la page web)
    Autre précision, quand lui demande la même opération, non pas sur une page web mais sur un fichier texte local, le script fonctionne.

    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    import requests
    import re
     
    pattern = "reverse"
     
    req = requests.get("http://192.168.0.28/page.html")
     
    for line in req.text:
            if re.search(pattern, line):
                    print(line)
    Si quelqu'un de plus avisé que moi a une idée, voire une réponse, je le remercie d'avance

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Si request.text est une chaine de caractères, "for line in req.text" va itérer sur chaque caractère.
    Et un seul caractère ne contiendra jamais une chaine de plusieurs caractères.

    Problème que vous auriez pu constater avec un simple print(line) dans la boucle et qui montre que vous vous embarquez à écrire des choses encore bien trop compliquées (même si elle paraissent simples...)

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

  3. #3
    Membre averti Avatar de publiphobe
    Homme Profil pro
    entrepreneur
    Inscrit en
    Septembre 2020
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : entrepreneur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2020
    Messages : 25
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Si request.text est une chaine de caractères, "for line in req.text" va itérer sur chaque caractère.
    Et un seul caractère ne contiendra jamais une chaine de plusieurs caractères.

    Problème que vous auriez pu constater avec un simple print(line) dans la boucle et qui montre que vous vous embarquez à écrire des choses encore bien trop compliquées (même si elle paraissent simples...)

    - W
    Merci pour ta réponse.

    Effectivement, quand je lui demande de chercher une seule lettre, il trouve toutes les occurences. Mais alors, comment ça se fait que ce ne soit pas le cas lorsque je lui demande de faire la même chose avec un fichier texte ?

    ps: j'ai transformé la variable en tableau, et ça fonctionne, merci encore.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par publiphobe Voir le message
    Mais alors, comment ça se fait que ce ne soit pas le cas lorsque je lui demande de faire la même chose avec un fichier texte ?
    Parce qu'un fichier texte est une séquence de lignes séparées par fin de ligne. Dans ce cas le for line in fichier_texte:, assigne les lignes successives du fichier à line.
    Et on peut voir la similitude entre une suite de lignes et une liste de chaines de caractères qui sont des objets à deux dimensions.

    Citation Envoyé par publiphobe Voir le message
    ps: j'ai transformé la variable en tableau, et ça fonctionne, merci encore.
    A partir du moment où l'intention est de rechercher la présence d'une chaine de caractères dans une autre, on peut faire directement if re.search(pattern, req.text).

    Et comme quand on a ouvert un tuto. aux chapitres sur les chaines de caractères, on a le vague souvenir de if pattern in req.text:...

    Vous connaissez la blague:
    Problème de la casserole de Poincaré
    Dans une pièce, se trouve : un évier muni d'un robinet d'eau courante, une casserole accrochée à un mur, un réchaud à gaz et une boîte d'alumettes.
    Problème : comment faire chauffer de l'eau ?
    Solution : on prend la casserole, on la remplit d'eau, on la pose sur le réchaud que l'on allume.
    Deuxième problème : nous sommes dans la même pièce, mais à présent, la casserole est remplie d'eau, posée sur le réchaud. La question est la même : faire chauffer de l'eau.
    Solution du physicien : on allume le réchaud.
    Solution du mathématicien : on vide la casserole, on la raccroche au mur, et on est ramené au problème précédent.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème mailto dans page web
    Par Guite dans le forum Intégration
    Réponses: 0
    Dernier message: 02/12/2008, 10h37
  2. [ActiveX] Message de sécurité dans page Web
    Par Mescalito dans le forum MFC
    Réponses: 3
    Dernier message: 21/02/2006, 16h15
  3. Pb activation module quicktime dans page web
    Par Adry dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 05/12/2005, 14h00
  4. [FPDF] Recherche chaine caractères dans fichier pdf
    Par licorne dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 28/10/2005, 11h55
  5. [HTML] pbm passage du caractère & dans lien web
    Par fab22montpellier dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 13/09/2005, 21h17

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