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 :

Boucle pour recherche à partir d'une liste urls dans un excel [Python 3.X]


Sujet :

Réseau/Web Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2021
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Boucle pour recherche à partir d'une liste urls dans un excel
    Bonjour à tous !
    Je suis nouveau sur ce forum et j'ai commencé python il y a quelques jours en vu de faire un agrégateur personnel sur excel de notes jeux vidéos et cinéma.

    Pour me faire la main je teste sur le site SensCritique.com

    À partir d'un premier programme j'ai récupéré tous les noms de jeux de borne d'arcade ainsi que leur lien href, pour par la suite récupérer d'autres informations et c'est là que je bloque.
    Voilà déjà ce que ça donne sur excel : Arcade [SC].xlsx

    Voici comment se présente le site.
    Je fais ma recherche qui me présente les différents jeux :

    Jeu01 <lien href01>
    Jeu02 <lien href02>
    Jeu03 <lien href03>
    ...

    Et en atteignant la page du lien je veux récupérer la note ainsi que le nombre de votants.

    Pour un jeu isolé c'est facile.
    En revanche ce que je n'arrive pas à faire c'est une boucle pour dire à mon programme :
    - Va dans le href du jeu 01 et récupère telles informations.
    - Ensuite tu fais pareil avec le href du jeu 02.
    - Ensuite tu fais pareil avec le href du jeu 03.
    - Et ainsi de suite jusqu'au jeu 2153.

    J'utilise xlwings car je modifie en parallèle en live mon excel et je le met à jour ensuite via python. J'aime faire des aller-retour entre les deux.

    Voilà ce que donne le programme actuellement fonctionnel pour un jeu. Donc sans boucle :
    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
    #-----STEP_01---------------------------------------------------Librairies.
    import requests
    from bs4 import BeautifulSoup
    import xlwings as xw
     
    wb = xw.Book('E:\Pythons\Arcade [SC].xlsx')
    ws1 = wb.sheets['Tab1']
     
     
    #-----STEP_02---------------------------------------------------URLs et nombre de jeux.
    urls = ws1.range('D2:D2154').value
    #---------------#
    # Arcade        #
    #---------------#
    nbJeux = 2153
     
    index = 0
     
    page = requests.get(urls[index])               #Requête
    soup=BeautifulSoup(page.text, "html.parser")   #Contenu
     
     
    listScore = soup.findAll('span', class_="pvi-scrating-value")
    listVotants = soup.findAll('b', class_="pvi-stats-number d-link-reverse")
     
     
    score=listScore[0]
    votants=listVotants[0]
     
    news_score=[]
    for s in listScore:
      news_s={}
      news_s=s.text
      news_score.append(news_s)
     
    news_votants=[]
    for v in listVotants:
      news_v={}
      news_v=v.text
      news_votants.append(news_v)
     
     
    ws1.range('F2:F5').value = news_s
    ws1.range('G2:G5').value = news_v
    Merci à tous par avance pour votre éclairage car là je commence à être un peu pommé.
    Bien sûr j'ai déjà testé pas mal de choses avant de faire ce post en fouillant sur le net mais je dois raté quelque chose.

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

    Si çà marche avec index = 0, il faut recommencer avec les index suivants... ce qui s'appelle faire une boucle.

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

  3. #3
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2021
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour Wiztricks,

    Merci pour ton retour.

    Oui ça j'avais bien compris qu'il fallait faire en sorte de changer la valeur d'index. C'est la manipulation que je ne connais pas.

    Je ne vais pas copier coller 2152 fois "index = x"...
    Je précise, la manipulation pour que index change de valeur en +1 automatiquement après chaque ajout dans ma liste de nouvelles valeurs. (Donc note et nombre de votants)

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

    Citation Envoyé par Soran28 Voir le message
    Oui ça j'avais bien compris qu'il fallait faire en sorte de changer la valeur d'index. C'est la manipulation que je ne connais pas.
    C'est une construction de base qu'on apprend dans tous les tutos et qui ressemble à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i in range(...):
         print(i)
    Après si vous venez ici juste parce que vous voulez coder un truc sans vous prendre le chou à ouvrir un tuto...
    Je pense qu'on perd son temps à essayer de vous aider... donc bonne continuation.

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

  5. #5
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2021
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Visiblement vous ne m'avez pas compris. Peut-être que votre condescendance vous a quelques peu aveuglé.

    Je sais ce qu'est une boucle, y compris la base de cela, sinon je n'aurai pas pris la peine de m'inscrire sur ce forum pour chercher plus d'explications.

    Voici la portion de code que j'ai écris avant-hier pour avoir les liens href ainsi que les noms des jeux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #-----STEP_08---------------------------------------------------Gestion de la pagination.
    def getPages(_nbPages, _url):
        liste_finale = pd.DataFrame()
        for i in range (_nbPages):
            liste = getPage(_url + urlPages + str(i+1))
            liste_finale = pd.concat([liste_finale, liste], ignore_index=True)
        return liste_finale
     
    liste_totale = getPages(nbPages, url)
    liste_totale.head()
    Et comme vous pouvez le constater, il y a une boucle. Vous pensez bien que je n'ai pas scrapé 2153 noms et liens en le faisant sans boucles...

    Sauf que dans mon cas ça ne fonctionne pas en utilisant cette méthode. Et oui peut être que la réponse est toute bête mais comme je l'ai mentionné ça fait moins d'une semaine que je programme en python. Le seul programme que j'ai appris avant celui-ci était du html... Et donc l'erreur toute bête, puisque à vous lire ça à l'air vraiment simple, moi je ne la vois pas.

    Ceci dit je pense m'en sortir pas trop mal pour un débutant non ? Mais si ce forum n'est réservé qu'à l'élite et bien je vous le laisse.

    Bonne continuation.

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    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 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Bonjour.

    Qu'est-ce qu'il ne fonctionne pas dans ta boucle exactement ?

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    Citation Envoyé par Soran28 Voir le message
    Visiblement vous ne m'avez pas compris. Peut-être que votre condescendance vous a quelques peu aveuglé.
    Sauf que dans mon cas ça ne fonctionne pas en utilisant cette méthode. Et oui peut être que la réponse est toute bête mais comme je l'ai mentionné ça fait moins d'une semaine que je programme en python. Le seul programme que j'ai appris avant celui-ci était du html... Et donc l'erreur toute bête, puisque à vous lire ça à l'air vraiment simple, moi je ne la vois pas.
    comme le demande Arioch, pour que l'on puisse t'aider il nous faut plus d'informations :
    1 - Le code complet où cela ne fonctionne pas
    2 - Le problème rencontré (message d'erreur, variable qui ne fait pas ce qu'on veut etc...)

    Quand cela ne fonctionne pas, le mieux c'est de faire du pas à pas et observer les variables sur chaque instruction.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

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

    Citation Envoyé par Soran28 Voir le message
    Sauf que dans mon cas ça ne fonctionne pas en utilisant cette méthode.
    Pourtant c'est comme ça que ça doit fonctionner... reste à montrer ce que vous avez essayé et raconté ce qui ne se passe pas bien (ou le message d'erreur)...
    à quoi sert de demander de l'aide? On ne va pas se déplacer pour voir!

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

  9. #9
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    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 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Avec ce petit bout de code, je récupère toutes les infos que tu cherches, url par url :

    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
    #!/usr/bin/env python3
    import requests
    from bs4 import BeautifulSoup
    import xlwings as xw
     
    def main() -> None:
        '''Main function'''
        wb = xw.Book('Arcade [SC].xlsx')
        ws1 = wb.sheets['Tab1']
        urls = ws1.range('D2:D11').value
     
        for url in urls:
            page = requests.get(url)
            soup=BeautifulSoup(page.text, "html.parser")
            listScore = soup.findAll('span', class_="pvi-scrating-value")[0]
            listVotants = soup.findAll('b', class_="pvi-stats-number d-link-reverse")[0]
            print(url, listScore, listVotants)
     
     
    if __name__ == '__main__':
        main()

  10. #10
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2021
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour à tous,

    Désolé pour le temps de réponse et merci pour vos retours.

    Entre temps j'ai bien avancé mais je suis tombé sur d'autres problèmes.

    Quand cela ne fonctionne pas, le mieux c'est de faire du pas à pas et observer les variables sur chaque instruction.
    Effectivement c'est ce que j'ai fais et j'ai réglé en partie le problème de la boucle.

    Pourtant c'est comme ça que ça doit fonctionner... reste à montrer ce que vous avez essayé et raconté ce qui ne se passe pas bien (ou le message d'erreur)...
    à quoi sert de demander de l'aide? On ne va pas se déplacer pour voir!
    Dans le code que je vous ai soumis je n'ai pas mis ma boucle tout simplement car j'en ai essayé plusieurs et qu'elles étaient toutes mauvaises. Raison pour laquelle j'ai mis le reste sans boucle en espérant qu'on puisse m'orienter. De plus je ne pouvais pas savoir parmi tous mes ratés quel serait celui qui serait le plus à même à être corrigé.

    Merci Arioch pour ton bout de code, je vais l'analyser en détail pour savoir ce que je peux améliorer.

    Voici actuellement où j'en suis :

    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
     
    #-----STEP_01---------------------------------------------------Librairies.
    import requests
    from bs4 import BeautifulSoup
    import pandas as pd
    import xlwings as xw
     
    wb = xw.Book('E:\Pythons\Arcade [SC].xlsx')
    ws1 = wb.sheets['Tab1']
     
    #-----STEP_02---------------------------------------------------URLs et nombre de jeux.
    urls = ws1.range('D2:D2152').value
    #---------------#
    # Arcade        #
    #---------------#
    vide = "[]"
    newScore=[]
    newVotant=[]
    listScore=[]
    listVotants=[]
     
    class BlankObj:
      def __repr__(self):
        return ""
     
    for index in urls:
      page = requests.get(index)
      soup = BeautifulSoup(page.text, "html.parser")
      Score = soup.findAll('span', class_="pvi-scrating-value")
      ScoreSrch = soup.findAll('span', class_="pvi-scrating-value")
      if str(ScoreSrch) == vide:
        print("vide")
        listScore.append(BlankObj)
      for s in Score:
        new_s = s.text
        newScore.append(new_s)
        listScore.append(newScore)
        print(newScore)
      continue
     
    print(listScore)
     
    ws1.range('F2:F2152').value = listScore
    Dans cette portion j'ai supprimé le scrap concernant les votants pour me concentrer sur les scores et pour épurer le code.

    J'ai enfin réussi à récupéré les informations que je voulais mais tout ne se passe pas comme je l'espérai car dans Excel, xlwings me met toutes les informations à la suite.
    Ce qui dérègle tous puisque certains jeux n'ont pas de notation sur sens critique.

    Voici un exemple de ce que j'obtiens :
    Jeu 01 noté ----------- Note du jeu 01
    Jeu 02 sans note ----- Note du jeu 03
    Jeu 03 noté ----------- Note du jeu 04
    Jeu 04 noté

    Alors j'ai essayé différentes méthodes mais aucunes ne fonctionnent.
    En essayant d'utiliser une fonction BlankObj (que j'ai laissé dans ce code).
    Par ailleurs j'ai l'impression qu'Excel ignore totalement cette fonction aussi.

    J'ai essayé en remplaçant le contenu de ma variable Score par un texte type "nul" ou par une valeur chiffrée.
    Dans les deux cas j'ai un problème de compatibilité dû à l'attribue de ma variable.
    J'ai ce message d'erreur :
    TypeError: Objects of type 'type' can not be converted to a COM VARIANT

    J'ai cherché sur internet, d'autres ont eu le même problème mais je n'ai pas trouvé encore de solutions.

    Voilà où j'en suis actuellement. Dites moi si je n'ai pas été clair et s'il vous faut plus d'informations.

    Encore merci.

    EDIT: Suite à l'analyse du code d'Arioch (merci encore au passage).

    Je constate le même message d'erreur avec xlwings (ou quasiment le même) :
    TypeError: Objects of type 'Tag' can not be converted to a COM VARIANT (but obtaining the buffer() of this object could)

    Dans son code j'ai juste rajouté la ligne "ws1.range('F2000:F2110').value = listScore"
    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
     
    import requests
    from bs4 import BeautifulSoup
    import xlwings as xw
     
     
    def main() -> None:
        '''Main function'''
        wb = xw.Book('E:\Pythons\Arcade [SC].xlsx')
        ws1 = wb.sheets['Tab1']
        urls = ws1.range('D2:D11').value
     
        for url in urls:
            page = requests.get(url)
            soup=BeautifulSoup(page.text, "html.parser")
            listScore = soup.findAll('span', class_="pvi-scrating-value")[0]
            listVotants = soup.findAll('b', class_="pvi-stats-number d-link-reverse")[0]
            print(url, listScore, listVotants)
        ws1.range('F2000:F2110').value = listScore
     
    if __name__ == '__main__':
        main()
    D'autres parts j'ai encore du mal avec les fonctions. J'avoue que pour le moment si je peux éviter de les utiliser je le fais.
    C'est clairement plus optimisé que le mien! Je vais faire quelques tests pour améliorer ma compréhension.

  11. #11
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    Citation Envoyé par Soran28 Voir le message
    Dans son code j'ai juste rajouté la ligne "ws1.range('F2000:F2110').value = listScore"
    C'est normal que tu aies cette erreur car la variable listScore n'est pas une liste de chaines ou de nombres mais un objet de type tag donc pas convertible.

    Voici des suggestions concernant ton code précédent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #-----STEP_01---------------------------------------------------Librairies.
    import requests
    from bs4 import BeautifulSoup
    import pandas as pd
    import xlwings as xw
     
    wb = xw.Book('E:\Pythons\Arcade [SC].xlsx')
    ici il est préférable de préfixer la chaîne avec un r pour éviter l'interprétation du \


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ws1 = wb.sheets['Tab1']
     
    #-----STEP_02---------------------------------------------------URLs et nombre de jeux.
    urls = ws1.range('D2:D2152').value
    ici il est préférable d'utiliser une plage nommée dans Excel pour éviter de changer le code en cas d'ajout ou de suppression de lignes.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #---------------#
    # Arcade        #
    #---------------#
    vide = "[]"
    newScore=[]
    newVotant=[]
    les variables newScore et newVotant ne sont pas forcément nécessaires.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    listScore=[]
    listVotants=[]
     
    class BlankObj:
      def __repr__(self):
        return ""
    La classe BlankObj n'est pas nécessaire


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for index in urls:
      page = requests.get(index)
      soup = BeautifulSoup(page.text, "html.parser")
      Score = soup.findAll('span', class_="pvi-scrating-value")
    il est préférable de faire un find simple qui renvoie le premier élément trouvé


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      ScoreSrch = soup.findAll('span', class_="pvi-scrating-value")
    cette ligne n'est pas nécessaire car le find simple renvoie None quand il ne trouve rien.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      if str(ScoreSrch) == vide:
        print("vide")
        listScore.append(BlankObj)
    c'est ici que provient certainement ton souci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      for s in Score:
        new_s = s.text
        newScore.append(new_s)
        listScore.append(newScore)
    on peut très bien remplacer ces 2 lignes par une seule en utilisant l'option transpose de range qui utilise une liste simple pour affecter les valeurs en colonne.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        print(newScore)
      continue
     
    print(listScore)
     
    ws1.range('F2:F2152').value = listScore
    pas la peine de spécifier la cellule de fin du range pour affecter la liste

    et voici donc un code qui fonctionne chez moi :
    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
    #!/usr/bin/env python3
    import requests
    from bs4 import BeautifulSoup
    import xlwings as xw
     
    def main() -> None:
        '''Main function'''
        wb = xw.Book(r'E:\Pythons\Arcade [SC].xlsx')
        ws1 = wb.sheets['Tab1']
        # urls = ws1.range('D2:D2154').value
        urls = ws1.range('ListeUrls').value
        listeScore = []
        listeVotants = []
        for url in urls:
            print(url)
            page = requests.get(url)
            soup=BeautifulSoup(page.text, "html.parser")
            Score = soup.find('span', class_="pvi-scrating-value")
            Votants = soup.find('b', class_="pvi-stats-number d-link-reverse")
            if Score != None:
                listeScore.append(Score.text)
            else:
                listeScore.append("vide")
            if Votants != None:
                listeVotants.append(Votants.text)
            else:
                listeVotants.append("vide")
        ws1.range('F2').options(transpose=True).value = listeScore
        ws1.range('G2').options(transpose=True).value = listeVotants
     
    if __name__ == '__main__':
        main()
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  12. #12
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2021
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour à tous !

    Un très grand merci Jurassic Pork pour les explications détaillées !
    Là j'ai vraiment tout compris y compris sur la fonction utilisée. Alors je ne sais pas si en repartant de zéro je saurai arrivé aussi vite à ce résultat mais je vais essayer pour m'entrainer sur d'autres sites que senscritique.
    Je pense que je vais d'abord refaire la même chose pour les films et voir comment je m'en sors avant.

    J'ai dû remettre cette ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    urls = ws1.range('D2:D2152').value
    #urls = ws1.range('ListeUrls').value
    Car avec 'ListeUrls' j'avais un message d'erreur :
    pywintypes.com_error: (-2147352567, 'Une exception s’est produite.', (0, None, None, None, 0, -2146827284), None)

    EDIT : J'ai rien dis, j'ai oublié de renommer ma plage dans Excel. Mettons ça sur le compte de la faim.
    EDIT 2 : Et bien enfaite, même en renommant la plage correctement j'ai le message d'erreur. Pas très grave, ça fonctionne quand même avec l'autre ligne.

    Maintenant tout fonctionne parfaitement comme je le souhaitais. Je n'ai plus qu'à faire ma mise en forme sur Excel et passer à la suite.

    Je passe le topic en résolu et encore merci à Arioch et à Jurassic Pork pour vos aides précieuses.

    Bonne journée à tous !

  13. #13
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    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 572
    Points : 2 014
    Points
    2 014
    Par défaut
    De rien

    J'aimais bien mon :

    Plutôt que :

    Pense à donner des noms immédiatement identifiables à tes variables, méthodes, attributs.

    Quand tu apprendras l'usage et tout le bénéfice des docstrings, ça te permettra déjà de bien documenter tes fonctions, méthodes et classes mais pense aussi à toi, dans quelques années, quand tu voudras relire ton code rapidement.

    Des noms explicites te permettront de parcourir ton code aisément sans te demander à quoi sert telle ou telle variable, tel ou tel attribut, telle ou telle méthode, etc.

  14. #14
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2021
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2021
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Effectivement Arioch,

    Le première chose que j'ai fais tout à l'heure en analysant le code c'est de mettre des commentaires un peu partout pour m'orienter au mieux.

    Et j'ai conservé le :


    J'ai fais déjà plusieurs tests et tout fonctionne au top !

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

Discussions similaires

  1. [shell] variable de recherche à partir d'une liste
    Par aerane dans le forum Shell et commandes GNU
    Réponses: 47
    Dernier message: 27/11/2012, 10h17
  2. Indexation fichiers pour recherche à partir d'une base
    Par cedy-kassy dans le forum Général Java
    Réponses: 3
    Dernier message: 10/04/2012, 10h30
  3. Réponses: 2
    Dernier message: 12/07/2010, 15h10
  4. [MySQL] effectuer recherche à partir d'une liste deroulante
    Par manguigs dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 25/05/2009, 16h48
  5. Moteur de recherche à partir d'une liste de critères
    Par ionnette dans le forum Requêtes et SQL.
    Réponses: 13
    Dernier message: 27/06/2008, 09h30

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