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

Réseau/Web Python Discussion :

Chaines vide lors de récupération des Rewars sur google maps


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de animalx123
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 148
    Par défaut Chaines vide lors de récupération des Rewars sur google maps
    Bonjour j'essaie de récupéré les rewards des restaurant dans google maps , tout a l'air de bien fonctionné mais le probléme est que ca me retourne des chaines vides, je vous donne un exemple de mon scripte sans toute les fonctions du scrolling et tout:
    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
     
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.common.keys import Keys
    import time
     
     
    driver = webdriver.Chrome('chromedriver.exe')
    url = "https://www.google.com/maps/search/Restaurant/@36.7401139,3.0725908,17z/data=!3m1!4b1?authuser=0&hl=fr"
    driver.get(url)
     
    #cree une liste de lien pour tester
     
    restos = driver.find_elements_by_xpath('//div[contains(@aria-label,"Résultats")]/div/div/a')
    lienRestos=[]
    for resto in restos:
            lienRestos.append(resto.get_attribute('href'))
     
    for link in lienRestos:
        driver.get(link)
     
        item_reward = driver.find_elements_by_class_name('ODSEW-ShBeI-text')
     
        for i in item_reward :
            print(i.text)
    merci de m'éclaircir sur le sujet

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 605
    Par défaut
    Essayez de placer des print sur vos variables/attributs aux endroits opportuns pour voir d'où ça commence à coincer.

    Commencez par le bas par exemple, puis remontez progressivement pour toper l'endroit exact où ça cloche.

  3. #3
    Membre très actif Avatar de animalx123
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 148
    Par défaut
    Justement j'ai fait tout cela et plus avant de poser ma question

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 245
    Par défaut
    hello,
    Une piste : Il trouve bien les résultats mais le commentaire ne s'affiche pas toujours sauf si l'on fait du pas à pas ou si l'on met un point d'arrêt sur le print du texte. Ce qui est louche c'est que si l'on enlève le point d'arrêt alors cela devient bon pendant quelques recherches.
    Ami calmant, J.P

  5. #5
    Membre très actif Avatar de animalx123
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 148
    Par défaut
    j'ai pas bien compris

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 245
    Par défaut
    hello,
    je crois que j'ai trouvé un moyen pour pouvoir récupérer les avis affichés : il faut "scroller" entièrement le panneau où se trouve les avis. Pour faire cela on utilisera le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    loc = driver.find_element_by_xpath('//button[contains(@aria-label,"données")]')
    ActionChains(driver).move_to_element(loc).perform()
    avec ce code on va jusqu'au bas du panneau, c'est à dire au bouton A propos des données
    par contre il faut rajouter dans les imports :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from selenium.webdriver.common.action_chains import ActionChains
    J' ai corrigé quelques erreurs dans mon script initial et j'ai inclus l'affichage des avis :
    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
    import time
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.common.action_chains import ActionChains
    options = Options()
    options.add_argument("--user-data-dir=D:\\Temp\\chrome")
    driver = webdriver.Chrome('chromedriver.exe',options=options)
    driver.implicitly_wait(8)
    url = "https://www.google.com/maps/search/Restaurants/@36.7424323,3.0646847,15z/data=!3m1!4b1"
    monScript = """ var scroller =document.querySelector('div[aria-label*="Résultats"]');
                    scroller.scrollTop=scroller.scrollHeight; """
    for numpage in range(2):
        driver.get(url)
        pageSuivante = driver.find_element_by_xpath('//button[@aria-label="Page suivante"]')
        for i in range(numpage):
            pageSuivante.click()
            time.sleep(5)
        for i in range(10):  #on fait défiler les résultats pour les avoir tous
            driver.execute_script(monScript)
        # on récupère les liens des infos de restos
        restos = driver.find_elements_by_xpath('//div[contains(@aria-label,"Résultats")]/div/div/a')
        lienRestos=[]
        for resto in restos:
            lienRestos.append(resto.get_attribute('href'))
        for lienResto in lienRestos:
            driver.get(lienResto)
            resto  = driver.find_element_by_tag_name('h1')
            print(resto.text)
            infos = driver.find_elements_by_xpath('//button[@class="CsEnBe"]')
            for info in infos:
                label = info.get_attribute('aria-label')
                if label != None and 'Adresse' in label:
                    print(label)
                if label != None and 'Numéro de téléphone' in label:
                    print(label)
            loc = driver.find_element_by_xpath('//button[contains(@aria-label,"données")]')
            ActionChains(driver).move_to_element(loc).perform()
            item_reward = driver.find_elements_by_class_name('ODSEW-ShBeI-text')
            for item in item_reward:
                print("*  ",item.text)
            print("==========================================")
    driver.quit()
    et voici quelques résultats obtenus :
    ==========================================
    Le Bois Des Arcades
    Adresse: P3RF+X9G, El Madania, Algérie
    Adresse: P3RF+X9G، المدنية
    Numéro de téléphone: +213 21 66 29 80
    * je déconseille vivement cet endroit
    après 2h d attente nous n avons toujours pas été servi en sachant que les personnes arrivées après nous ont été servies. …
    * Valeur sûre. Il ne change pas avec le temps. Et bravo à Driss pour son excellent service !
    * Un de mes restaurants préférés sur Alger. L'accueil est irréprochable, les plats sont très bons à chaque fois le personnel est très aimable. Et un des points forts de ce resto est bien sûr LA TERRASSE , une vue magnifique...
    ==========================================
    restaurant les sources
    Adresse: Bir Mourad Raïs 16005, Algérie
    Adresse: بير مراد رايس 16005
    Numéro de téléphone: +213 541 00 00 21
    * Bon, propre, prix abordable, et très bon service
    Je recommande
    * Il est farfait je le recommande pour tous le monde
    * Endroit beau propre et familiale
    ==========================================
    Restaurant L' Empreinte
    Adresse: Kouba 16051, Algérie
    Adresse: القبة 16051
    Numéro de téléphone: +213 799 44 58 05
    * Propreté, bon accueil, très bons plats, les prix restent corrects par rapport à d'autres restaurants dans les environs
    * La propreté 9/10, ambiance et décor 9/10, prix 9/10, le délice 8/10, ils mirent de la sauce barbecue dans mon burger sans m’avoir demandé. Aussi ce que j’ai pas aimé c’est que les toilettes hommes et femmes ont la même porte !
    * Un acceuil chaleureux, l'équipe edt très serviable, les pizzas sont bonne mais les plats sont minimes je trouve, le décor est moyen, l'accès pour le restaurant est un peu difficile sinon suivez Google map, les prix sont bien. Merci.
    ==========================================
    Ami calmant, J.P

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/11/2018, 10h55
  2. Placer des marker sur google map
    Par ju_bicycle dans le forum Général Python
    Réponses: 1
    Dernier message: 18/05/2011, 20h50
  3. Réponses: 3
    Dernier message: 18/04/2011, 13h43
  4. Récupération des commentaires sur les champs des tables.
    Par mikef32 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 10/08/2006, 00h23
  5. Réponses: 2
    Dernier message: 21/05/2006, 14h02

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