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 :

Out of memory, Google chrome et selenium


Sujet :

Python

  1. #1
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut Out of memory, Google chrome et selenium
    Bonjour,

    depuis à peu près 1 semaine, mon script qui utilise selenium et chromedrive.exe fait apparaître une page web figée avec le message suivant

    Out of memory
    Il faut que je clique sur actualiser pour que le script reparte.

    Voici une partie du code

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    from selenium import webdriver
    import time
    from bs4 import BeautifulSoup
    import requests
    from web3 import Web3
    from ens import ENS
    from selenium import webdriver
    from selenium.common.exceptions import TimeoutException
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    import csv
    from tqdm import tqdm
    import os
    import math
    import csv
     
     
     
    def get_informations(dict_result):
        print("start website")
        options = webdriver.ChromeOptions()
    	options.add_experimental_option('excludeSwitches', ['enable-logging'])
        print('opion done')
        count = 0
     
        browser = webdriver.Chrome(options=options)
     
        # browser = webdriver.Chrome(executable_path='/home/gary/loca/chromedriver',options=options)
     
        print('dodo')
        for key, value in tqdm(dict_result.items(), desc="Getting Wallet From website"):
            try:
                if key:
                    browser.get(
                        'https://website.com/usefull/' + key)
                    soup = BeautifulSoup(browser.page_source, 'html.parser')
                    time.sleep(5)
                    print('https://website.com/usefull/' + key)
                    price = soup.select('#ContentPlaceHolder1_divSummary > div.row.g-3.mb-4 > div:nth-child(1) > div > div > div:nth-child(3)')[0].text.split('(')
                    final_price = 'UNKNOWN'
     
                    gr = price[0].split('$')
                    final_price = gr[-1]
                    final_price = final_price.replace(',','')
                    print(math.floor(float(final_price)))
                    dict_result[key].append(math.floor(float(final_price)))
                    age = soup.select('#transactions > div > div.table-responsive > table > tbody > tr:nth-child(1) > td.showAge > span')
     
                    if key in browser.page_source:
                        a = soup.select('#transactions > div > div.table-responsive > table > tbody')
                        for e in a:
                            if key in e.text:
                                dict_result[key].append(key)
                            else:
                                dict_result[key].append('NO')
                        dict_result[key].append(age[0].text)
                        count +=1
                        print ('Il y a '+ str(count) + ' match')
                    else:
                        dict_result[key].append("Aucune info")
                        dict_result[key].append("Aucune info")
            except Exception as err:
                print('ERROR GETTING website INFORMATIONS', err)
                dict_result[key].append("Aucune info")
                dict_result[key].append("Aucune info")
        return dict_result

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

    Si vous ajoutez sans fin des informations en mémoire, au bout d'un moment vous aurez consommé toute la mémoire disponible.
    Et il faut revoir un peu ce que fait votre code pour éviter ça... mais ce n'est pas un sujet Python mais de conception: elle n'a pas tenu compte de certaines limites physiques.

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

  3. #3
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut
    ce qui est bizarre, c'est j'utilise ce code depuis plus d'1 an sans jamais avoir eu ce problème d'Out of memory.
    Et là, depuis 1 ou 2 semaine, j'ai ce problème.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 688
    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 688
    Par défaut
    Si le code n'a pas changé (comment en êtes vous sûr?), c'est que quelque chose d'autre (externe) à changé.
    Après, c'est du boulot (sur le code, sur l 'environnement,...) pour comprendre le pourquoi et imaginer des solutions...

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

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 190
    Par défaut
    Hello,
    jeter un coup d'oeil ici
    sinon cela arrive au bout d'un certain temps ? ou c'est aléatoire ?
    Ami calmant, J.P

  6. #6
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 301
    Par défaut
    bonjour

    j'ai du mal à comprendre la logique ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for key, value in dict_result.items():
        # recup la page web puis
        dict_result[key].append(...)
        dict_result[key].append(...)
    Ce n'est pas une boucle infinie ? puisque tu ajoutes dans tous les cas (sauf si existe?) 2 éléments dans le dico
    Un élément non trouvé dans la liste de départ, et on ne sort jamais
    Un nouvel élément trouvé dans la liste de départ, et on ne sort jamais


    EDIT: OOPS, je suis fatigué... c'est un dico de list (2 éléments) et key ne change jamais dans la boucle

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 688
    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 688
    Par défaut
    Citation Envoyé par papajoker Voir le message
    Ce n'est pas une boucle infinie ?
    Un dépassement mémoire arrive lorsqu'on demande de la mémoire... et ne n'est pas forcément le code qui plante qui devra être revu pour corriger le problème: l'extrait de code montré n'est pas significatif.

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

  8. #8
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Hello,
    jeter un coup d'oeil ici
    sinon cela arrive au bout d'un certain temps ? ou c'est aléatoire ?
    Ami calmant, J.P
    salut. Ben ça arrive toutes les 20 à 30 minutes peut-être.
    Le script peut durer longtemps car il scanne de nombreuses pages.

    Je suis sûr que le code n'a pas changé puisqu'il est sur mon que personne ne le touche.

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 688
    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 688
    Par défaut
    Citation Envoyé par sam01 Voir le message
    Je suis sûr que le code n'a pas changé puisqu'il est sur mon que personne ne le touche.
    La date de dernière modification du script (ou la restauration d'une sauvegarde antérieure) serait plus convaincante.

    Citation Envoyé par sam01 Voir le message
    salut. Ben ça arrive toutes les 20 à 30 minutes peut-être.
    ça c'est bien: vous pouvez voir rapidement l'effet d'un changement (pas attendre 15 jours pour rien)... reste à trouver des idées sur quoi changer pour voir...

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

  10. #10
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 931
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 931
    Par défaut
    c'est justement pour ça que j'ai envoyé un message

    c'est que je n'ai pas d'idée....

  11. #11
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 688
    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 688
    Par défaut
    Citation Envoyé par sam01 Voir le message
    c'est que je n'ai pas d'idée....
    Je l'avais compris... mais c'est le genre de problème où on ne peut pas grand chose pour vous: on ne sait pas reproduire et le peu de code que vous montrez étant passablement pourri...
    note: ce n'est pas un reproche, c'est un constat.

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

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 190
    Par défaut
    D'après ce que j'ai pu voir il me semble que tu es sous linux. Dans une fenêtre console (terminal) lance htop qui permet de visualiser les processus en cours et la mémoire qu'ils utilisent. Regarde quel processus prend le plus de mémoire pendant ta boucle.

Discussions similaires

  1. Problème lancement Google Chrome / Chromium avec Selenium
    Par Creamy2luxe dans le forum Général Python
    Réponses: 3
    Dernier message: 05/09/2023, 18h56
  2. Problème Selenium et Google Chrome
    Par francoisPLN dans le forum Test
    Réponses: 1
    Dernier message: 03/08/2012, 15h01
  3. [pb mémoire] out of memory d'eclipse
    Par Casp dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 12/05/2005, 16h39
  4. Out of memory
    Par shurato dans le forum ANT
    Réponses: 1
    Dernier message: 10/11/2004, 16h19
  5. [JBuilder 8] Out of memory problem ...
    Par keros dans le forum JBuilder
    Réponses: 2
    Dernier message: 08/09/2003, 19h03

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