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 :

Chercher le nombre de fois qu'un mot apparaît sur une page web


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Chercher le nombre de fois qu'un mot apparaît sur une page web
    Salut ! J'ai un problème dans un code que je ne comprend pas... (ce pourquoi je suis la)

    Je souhaite chercher combien de fois "Enclume" apparaît sur la page de recherche google avec comme query : Quel nom porte la masse de fer sur laquelle on forge les metaux ?

    Si je vais sur la page moi même et que je recherche "Enclume" je le trouve 3 fois, pourtant mon programme me sort un zero.

    Je ne comprend pas.
    Je debute en Python, j’espère donc que quelqu'un puisse m'aider, ce serait très sympa de sa part

    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
    import requests
    import re
    def findword():
    	global numF_rep
    	page = requests.get("https://www.google.fr/search?q=Quel20%nom20%porte20%la20%masse20%de20%fer20%sur20%laquelle20%on20%forge20%les20%metaux20%").text
    	print(wordtofind)
    	count_nb = re.findall(wordtofind, page)
    	print(count_nb)
    	numF_rep = int(len(count_nb))
     
    wordtofind = "Enclume"
    findword()
    print(numF_rep)
    Output :

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par Warzzed300 Voir le message
    Si je vais sur la page moi même et que je recherche "Enclume" je le trouve 3 fois, pourtant mon programme me sort un zero.
    C'est que la chaîne de caractère "Enclume" n'est pas dans...
    Et la question est plutôt du côté de l'URL qui fait la requête: si elle est bien construite (ce qui reste à voir), pourquoi via un programme (accessoirement écrit en Python) la chaîne de caractères que laborieusement construite "à la main" retourne autre chose que ce que retourne mon navigateur Web?
    Et si la réponse de Google est différente, c'est que les informations que reçoit Google sont différentes. Et si c'est pas dans l'URL, peut être que c'est côté "headers" de la requête HTTP. Et on essaie de suivre cette piste (ou une autre).

    Citation Envoyé par Warzzed300 Voir le message
    Je debute en Python, j’espère donc que quelqu'un puisse m'aider, ce serait très sympa de sa part
    Pour l'instant, c'est d'abord un problème HTTP.
    Python là dedans ne fait que vous donner accès aux chaînes de caractères échangées entre le client (votre code) et le serveur (Google).

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

  3. #3
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Effectivement, il n'y pas le mot cherché dans le fichier "page.txt" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def findword(word):
        global numF_rep
        page = requests.get("https://www.google.fr/search?q=Quel20%nom20%porte20%la20%masse20%de20%fer20%sur20%laquelle20%on20%forge20%les20%metaux20%").text
        with open("page.txt","w") as f:
            f.write(page)
        print(word)
        count_nb = re.findall(word, page)
        print(count_nb)
        numF_rep = int(len(count_nb))
     
    wordtofind = "Enclume"
    findword(wordtofind)
    Pas d'aide par mp.

  4. #4
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    juste pour remarque, l'url est mauvaise, il y a partout des 20% alors que c'est %20, quant à Google méfiance il a tendance à bannir assez vite les bots, mieux vaut peut-être utiliser un autre moteur de recherche, Bing par exemple ou Faroo qui dispose d'une API directement

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour vos réponses mais malheureusement je n'ai toujours pas trouvé de solutions...

    J'ai changer le moteur de recherche pour tenter de faire fonctionner tout ça mais je trouve le même résultat. Au début je pensais qu'en dessous de 4 résultats le programme ne détectait tout simplement rien mais par exemple sur la même page si je cherche "Sciences" il le trouve deux fois et c'est correct.

    Il n'y a que certains mot comme "Enclume" qui ne sont pas trouvé alors qu'ils existent belle et bien sur la page...

    Si quelqu'un aurait un autre programme permettant de compter le nombre de fois qu'un mot apparaît sur une page web ce serait très utile pour moi... Sachant qu'en HTTP, HTML je ne m'y connais pas trop non plus

  6. #6
    Membre confirmé

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Points : 503
    Points
    503
    Billets dans le blog
    1
    Par défaut
    Salut,

    Si j'exécute ta recherche, je n'ai pas le mot enclume en page1, en revanche en page2 il apparait.
    As-tu des options spécifiques réglées pour tes moteurs de recherches, cookies ? sessions (compte) ?
    As-tu testé tes recherches avec le javascript désactivé ?

    Maintenant est-ce pertinent de faire une recherche sur une phrase complète ?

    Et pour comparer ce que ton script charge comme html (et aussi d'éviter de spammer les moteurs de recherches pour mettre au point ton script), il serait mieux de mettre ça en cache.

    Un exemple fait à l'arrache.

    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
    import requests
    import re
    import os
     
    caches = (
        dict(
            moteur='google',
            fichier='./google_cache_forge-metaux-outil-support',
            url='https://www.google.fr/search?q=forge+métaux+support',
        ),
        dict(
            moteur='duckduckgo',
            fichier='./duckduckgo_cache_forge-metaux-outil-support',
            url='https://duckduckgo.com/html?q=forge+métaux+outil+support&kl=fr-fr',
        ),
    )
     
    # Mise en cache pour travailler sur des copies locales
    for item in caches :
        if not os.path.isfile(item['fichier']) :
            req = requests.get(item['url'])
            html = req.text
            with open(item['fichier'], 'w') as f :
                f.write(html)
     
     
    for item in caches :
        with open(item['fichier']) as f :
            print('#' * 10, item['moteur'], '#' * 10)
            html = f.read()
            for s in ('enclume', 'acier', 'patine') :
                print(s, len(re.findall('\W({})\W'.format(s), html, flags=re.I)))
    Qui chez moi affiche :

    ########## google ##########
    enclume 4
    acier 6
    patine 1
    ########## duckduckgo ##########
    enclume 4
    acier 2
    patine 0
    Le temps ronge l'amour comme l'acide.

  7. #7
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Citation Envoyé par Warzzed300 Voir le message
    Merci pour vos réponses mais malheureusement je n'ai toujours pas trouvé de solutions...

    J'ai changer le moteur de recherche pour tenter de faire fonctionner tout ça mais je trouve le même résultat. Au début je pensais qu'en dessous de 4 résultats le programme ne détectait tout simplement rien mais par exemple sur la même page si je cherche "Sciences" il le trouve deux fois et c'est correct.

    Il n'y a que certains mot comme "Enclume" qui ne sont pas trouvé alors qu'ils existent belle et bien sur la page...

    Si quelqu'un aurait un autre programme permettant de compter le nombre de fois qu'un mot apparaît sur une page web ce serait très utile pour moi... Sachant qu'en HTTP, HTML je ne m'y connais pas trop non plus
    Et la bonne adresse : c'est quoi ???
    Pas d'aide par mp.

Discussions similaires

  1. [Python 3.X] Calculer le nombre de fois où un mot apparaît dans chaque "document" d'un fichier texte
    Par RussellUp dans le forum Général Python
    Réponses: 7
    Dernier message: 22/03/2018, 08h30
  2. Réponses: 2
    Dernier message: 11/04/2017, 13h59
  3. le nombre de fois ou un mot existe dans une ligne
    Par mohammed.badre dans le forum Débuter
    Réponses: 4
    Dernier message: 23/11/2011, 12h10
  4. Réponses: 4
    Dernier message: 06/12/2007, 16h46
  5. colorer des occurences d'un mot/phrase dans une page web
    Par hicham_alaoui1 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/08/2007, 02h47

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