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érer la valeur d'une variable stockée dans un js script et l'utiliser sur python


Sujet :

Python

  1. #61
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 811
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Is El Voir le message
    j'ai essayé ca mais le code ne s'arrête pas et aucun output
    Ben c'est sûr que si tu ne changes pas les infos traitées entre deux itérations, et que la date n'est pas trouvée à la première, elle ne le sera pas non plus aux tours suivants. C'est un peu le principe d'une boucle infinie quoi...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  2. #62
    Membre averti
    Homme Profil pro
    Autre
    Inscrit en
    Février 2023
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Maroc

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Février 2023
    Messages : 49
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ben c'est sûr que si tu ne changes pas les infos traitées entre deux itérations, et que la date n'est pas trouvée à la première, elle ne le sera pas non plus aux tours suivants. C'est un peu le principe d'une boucle infinie quoi...
    bonsoir j'ai pas compris qu'est ce que je devrai changer?. merci

  3. #63
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 044
    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 : 4 044
    Par défaut
    Citation Envoyé par Is El Voir le message
    bonsoir j'ai pas compris qu'est ce que je devrai changer?. merci
    C'est un problème qui a déjà pris 4 pages de manière plus ou moins directement en t'indiquant que pour comprendre il faut apprendre...

    Si tu comprenais ce que tu fais et que tu savais ce que t'attends comme résultat, tu saurais sans doute adapter ton code pour résoudre le problème.

    Seulement tu donnes des morceaux de code adaptés selon les résultats que tu donnes, et dont on ne sait même pas si tu les as utilisé de la bonne manière. Parce-que l'on a pas le code que tu as testé (je parle pas du morceau de code mais le code entier), on a pas les erreurs de l'interpréteur, le code HTML qui permet de faire des tests de notre côté, etc... donc la seule solution est de comprendre Python, pour comprendre les erreurs et modifier le code python selon tes besoins.

    Ce que chacun d'entre nous, plus ou moins brusquement, essayons de te faire comprendre... mais apparemment, 3 pages plus tard on en est toujours au même point, et ça pourrait encore durer longtemps... alors à quand la remise en question ? Combien de temps avant de comprendre que python ne s'apprend pas en un jour et combien de temps te faut-il pour comprendre qu'ici on ne donnera jamais un code complet sans que tu te sortes les doigts du ... ?

    Prends les choses en main, tu veux un code python, soit tu payes un presta, soit tu vas sur ce type de forum tout en apprenant le langage Python.

  4. #64
    Membre averti
    Homme Profil pro
    Autre
    Inscrit en
    Février 2023
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Maroc

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Février 2023
    Messages : 49
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Ben c'est sûr que si tu ne changes pas les infos traitées entre deux itérations, et que la date n'est pas trouvée à la première, elle ne le sera pas non plus aux tours suivants. C'est un peu le principe d'une boucle infinie quoi...
    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
    import re
     
    html = """
    <script type="text/javascript">
    var dt4  = '2019-03-07';
    var blocked_dates = ["20-03-2019","01-01-1970","28-03-2019","29-03-2019","20-03-2019","01-01-1970","28-03-2019","29-03-2019"];
    var available_dates = [];
    var fullCapicity_dates = [];
    var offDates_dates = ["09-03-2019","10-03-2019","16-03-2019","17-03-2019","20-03-2019","23-03-2019","24-03-2019","28-03-2019","29-03-2019","30-03-2019","31-03-2019"];
    var allowArray = [1];
    </script>
    """
     
    date_list = re.findall(r'var\s*available_dates\s*=\s*\[[^\]]+', html)
    if date_list:
        for av_date in re.findall(r"\"[0-9\-]+\"",date_list[0]) :
            print(av_date.replace('"',''))
    else :
        print("no available dates")
    output :
    [Running] python -u "C:\Users\eloua\AppData\Local\Temp\tempCodeRunnerFile.python"
    no available dates

    [Done] exited with code=0 in 0.72 seconds
    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
    import re
     
    html = """
    <script type="text/javascript">
    var dt4  = '2019-03-07';
    var blocked_dates = ["20-03-2019","01-01-1970","28-03-2019","29-03-2019","20-03-2019","01-01-1970","28-03-2019","29-03-2019"];
    var available_dates = ["07-03-2019","08-03-2019","11-03-2019","12-03-2019","13-03-2019","14-03-2019","15-03-2019","18-03-2019","19-03-2019","21-03-2019","22-03-2019","25-03-2019","26-03-2019","27-03-2019"];
    var fullCapicity_dates = [];
    var offDates_dates = ["09-03-2019","10-03-2019","16-03-2019","17-03-2019","20-03-2019","23-03-2019","24-03-2019","28-03-2019","29-03-2019","30-03-2019","31-03-2019"];
    var allowArray = [1];
    </script>
    """
     
    date_list = re.findall(r'var\s*available_dates\s*=\s*\[[^\]]+', html)
    if date_list:
        for av_date in re.findall(r"\"[0-9\-]+\"",date_list[0]) :
            print(av_date.replace('"',''))
    else :
        print("no available dates")
    [Running] python -u "C:\Users\eloua\AppData\Local\Temp\tempCodeRunnerFile.python"
    07-03-2019
    08-03-2019
    11-03-2019
    12-03-2019
    13-03-2019
    14-03-2019
    15-03-2019
    18-03-2019
    19-03-2019
    21-03-2019
    22-03-2019
    25-03-2019
    26-03-2019
    27-03-2019

    [Done] exited with code=0 in 0.724 seconds
    Je pense que là c'est bon. maintenant puisque le input du datepicker est rempli par le js code dans le html de la page. comment pourrais renvoyer la premiere date capturée dans le input box et continuer? merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" readonly="" class="form-control-input app_date validate" style="width: 260px;" id="app_date" name="app_date" placeholder="YYYY-MM-DD" onchange="this.form.submit();showLoader();" value="" autocomplete="off">

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 187
    Par défaut
    Hello,
    Citation Envoyé par Is El Voir le message
    Je pense que là c'est bon. maintenant puisque le input du datepicker est rempli par le js code dans le html de la page. comment pourrais renvoyer la premiere date capturée dans le input box et continuer?
    Il faut arrêter la boucle par un break dès qu'une date est trouvée.
    Exemple (à adapter) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dateValides = re.findall(r"\"[0-9\-]+\"",dateList[0])
    if dateValides:
        for datelibre in dateValides:
            choixDate = datelibre.replace('"','')
            break
    print(choixDate)
    On pourrait aussi prendre le premier élément de la liste sans faire de boucle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dateValides = re.findall(r"\"[0-9\-]+\"",dateList[0])
    if dateValides:
        choixDate = dateValides[0].replace('"','')
    print(choixDate)
    Ami calmant, J.P

  6. #66
    Membre averti
    Homme Profil pro
    Autre
    Inscrit en
    Février 2023
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Maroc

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Février 2023
    Messages : 49
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Hello,

    Il faut arrêter la boucle par un break dès qu'une date est trouvée.
    Exemple (à adapter) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dateValides = re.findall(r"\"[0-9\-]+\"",dateList[0])
    if dateValides:
        for datelibre in dateValides:
            choixDate = datelibre.replace('"','')
            break
    print(choixDate)
    On pourrait aussi prendre le premier élément de la liste sans faire de boucle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dateValides = re.findall(r"\"[0-9\-]+\"",dateList[0])
    if dateValides:
        choixDate = dateValides[0].replace('"','')
    print(choixDate)
    Ami calmant, J.P
    Bonjour @jurassic pork merci pour ton aide, donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    date_list = re.findall(r'var\s*available_dates\s*=\s*\[[^\]]+', html)
    if date_list: 
    for av_date in re.findall(r"\"[0-9\-]+\"",date_list[0]) : 
    print(av_date.replace('"',''))
    Break
    else : print("no available dates")
    Tout ça c'est bien, mais comment faire pour renvoyer la première date par exemple dans l'input du datepicker

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" readonly="" class="form-control-input app_date validate" style="width: 260px;" id="app_date" name="app_date" placeholder="YYYY-MM-DD" onchange="this.form.submit();showLoader();" value="" autocomplete="off">
    et continuer mon script pour remplir le formulaire.

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 187
    Par défaut
    A essayer ( en utilisant aussi selenium pour piloter un navigateur et pouvoir agir sur les contrôles de la page HTML) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    # 
    date_list = re.findall(r'var\s*available_dates\s*=\s*\[[^\]]+', html)
    if date_list: 
        choixDate = date_list[0].replace('"','')
        print(choixDate)
        driver.find_element(By.ID, "app_date").clear()
        driver.find_element(By.ID, "app_date").send_keys(choixDate)
    else : print("no available dates")

  8. #68
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 298
    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 298
    Par défaut
    Je ne vois pas pourquoi tu continues…
    Maintenant que tu as les dates, ton script peut directement t'envoyer un mail (voir sms), il ne te reste plus qu'à te connecter toi-même.
    Cela répond déjà à la problématique que tu nous as donné au début dans ton premier sujet !
    De plus, quand je lis la faq :

    Dois-je payer le rendez-vous?
    Oui, les candidats éligibles pour payer les rendez-vous doivent payer pour cela.
    Comment puis-je payer le rendez-vous?
    Le paiement du rendez-vous peut être effectué en utilisant n'importe quelle carte de débit ou de crédit émise par une banque marocaine.
    Vu ton niveau plus que faible en codage, tu ferais mieux d'abandonner l'inscription via robot. (en france, c'est impossible puisqu'il y a un contrôle du payeur)

  9. #69
    Membre averti
    Homme Profil pro
    Autre
    Inscrit en
    Février 2023
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Maroc

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Février 2023
    Messages : 49
    Par défaut
    Citation Envoyé par papajoker Voir le message
    Je ne vois pas pourquoi tu continues…
    Maintenant que tu as les dates, ton script peut directement t'envoyer un mail (voir sms), il ne te reste plus qu'à te connecter toi-même.
    Cela répond déjà à la problématique que tu nous as donné au début dans ton premier sujet !
    De plus, quand je lis la faq :


    Vu ton niveau plus que faible en codage, tu ferais mieux d'abandonner l'inscription via robot. (en france, c'est impossible puisqu'il y a un contrôle du payeur)
    Ce n'est pas moi qui ai soulevé la problématique citée dans la faq. Oui Maintenant que j'ai les dates il faut envoyer la première date capturée dans l'input du datepicker ( je ne sais pas si sendkeys() va marcher sachant qu'il y'a le paramètre onchange). L'idée de notifier par mail ou SMS est bonne. Pourriez-vous me donner des pistes ?

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 187
    Par défaut
    Hello,
    Citation Envoyé par Is El Voir le message
    Oui Maintenant que j'ai les dates il faut envoyer la première date capturée dans l'input du datepicker ( je ne sais pas si sendkeys() va marcher sachant qu'il y'a le paramètre onchange).
    Pour que l'événement OnChange soit déclenché il faut envoyer un "ENTER" dans le champ texte. Exemple :
    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
    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    ser = Service(r"D:\\Selenium\\WebDrivers\\chromedriver.exe")
    options = webdriver.ChromeOptions() 
    options.add_argument("user-data-dir=D:\\Selenium\\Profil") #Path to your chrome profile
    w = webdriver.Chrome(service=ser, chrome_options=options)
    url1 = "https://www.w3.org/WAI/UA/TS/html401/cp0102/0102-ONCHANGE-INPUT.html"
    w.implicitly_wait(5) # seconds
    w.get(url1)
    w.find_element(By.NAME, 'orig').clear
    w.find_element(By.NAME, 'orig').send_keys('Ma date')
    w.find_element(By.NAME, 'orig').send_keys(Keys.ENTER)
    print("fin")
    Ami calmant, J.P

  11. #71
    Membre averti
    Homme Profil pro
    Autre
    Inscrit en
    Février 2023
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Maroc

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Février 2023
    Messages : 49
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Hello,

    Pour que l'événement OnChange soit déclenché il faut envoyer un "ENTER" dans le champ texte. Exemple :
    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
    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    ser = Service(r"D:\\Selenium\\WebDrivers\\chromedriver.exe")
    options = webdriver.ChromeOptions() 
    options.add_argument("user-data-dir=D:\\Selenium\\Profil") #Path to your chrome profile
    w = webdriver.Chrome(service=ser, chrome_options=options)
    url1 = "https://www.w3.org/WAI/UA/TS/html401/cp0102/0102-ONCHANGE-INPUT.html"
    w.implicitly_wait(5) # seconds
    w.get(url1)
    w.find_element(By.NAME, 'orig').clear
    w.find_element(By.NAME, 'orig').send_keys('Ma date')
    w.find_element(By.NAME, 'orig').send_keys(Keys.ENTER)
    print("fin")
    Ami calmant, J.P
    Bonjour,

    A quoi correspond" orig"

    Merci

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 187
    Par défaut
    Citation Envoyé par Is El Voir le message
    Bonjour,

    A quoi correspond" orig"

    Merci
    voir le code de la page HTML qui est utilisé dans cet exemple

Discussions similaires

  1. Réponses: 17
    Dernier message: 11/10/2012, 18h27
  2. [Spip] Récupérer la valeur d'une variable PHP dans une boucle Spip
    Par papisdoums dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 10/04/2009, 19h03
  3. [PHP 5.0] Récupérer la valeur d'une variable php dans du code javascript
    Par HF974 dans le forum Langage
    Réponses: 4
    Dernier message: 08/03/2009, 11h46
  4. Réponses: 2
    Dernier message: 03/12/2008, 17h34
  5. Réponses: 3
    Dernier message: 28/08/2007, 15h21

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