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 :

class generé aleatoirement


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2022
    Messages : 7
    Par défaut class generé aleatoirement
    bonjour a tous
    je suis tout neuf en python
    j'ai cherché un peu partout mais je ne dois pas poser la bonne question

    j’apprends a scraper mais avec les classe generé d'une page a l'autre cela ne fonctionne plus

    comment puis-je rechercher une classe qui ne contient pas tout a fait les meme caractere
    par exempe

    class = "azerty123qwerty"
    class = "azerty456qwerty"
    class = "azerty789qwerty"

    je voudrai trouver 'azerty' dans un pemier temps
    find_all (class : "azerty")
    pour extraire le contenu
    avec du
    class[0]
    class[1]
    class[2]

    je sais pas si c'est clair

    merci d'avance

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    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 323
    Par défaut
    bonjour

    Attention , dans ton code python "class" est un mot réservé en python

    Pour ta question, en fait elle correspond sans doute plus à une question css (donc autre forum).
    Voir les sélecteurs css :
    https://developer.mozilla.org/fr/doc.../CSS_selectors
    https://developer.mozilla.org/fr/doc...bute_selectors

    peut se traduire en code python/bs4 par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    html = """
        <div class="toto123">ok</div> <b class="tataettoto123">NO</b>
        <div class="toto457">NO pour le 7</div> <i class="toto123">ok</i>
        <div class="tota123">NO</div>
        <p><div class="toto723 tata">ok</div></p>
    """
     
    soup = BeautifulSoup(html, "html.parser")
     
    for tag in soup.select("*[class^=toto]"):
        if str(tag["class"][0]).endswith("7"):  # eventuellement on peut ajouter un filtre écrit en python
            continue
        print(tag, tag["class"], tag.attrs["class"], tag.get_text())
    Sinon, pour très complexe, il est possible d'utiliser les regex python avec bs (c'est dans la doc de ta fonction).
    Comme tu peux le voir avec mon filtre bidon (termine pas par 7), on n'est même pas obligé d'utiliser un filtrage inclus dans bs.

    ---------

    Lorsque l'on a des doutes, on se fait un mini script comme celui-ci pour faire ces 36 mini tests.
    Si j'ai tous les "ok" et uniquement eux, c'est que j'ai trouvé le bon filtre
    $moi= (:nono: !== :oops:) ? :king: : :triste: ;

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2022
    Messages : 7
    Par défaut
    super j'arrive a sortir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <span class = "toto123tata"INFO1</span>
    <span class = "toto456tata"INFO2</span>
    <span class = "toto789tata"INFO3</span>
    maintenant comment je fait pour reccuperer mes infos?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    info1 = span[0] --> 'INFO1'
    info2 = span[1] --> 'INFO2'
    info3 = span[2] --> 'INFO3'

  4. #4
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    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 323
    Par défaut
    bien sûr si c'est span que tu désires uniquement mon code *[class^=toto] est en fait span[class^=toto].

    "recuperer mes infos ?" ??? je ne comprends pas la question puisque tu dis(montre) l'avoir fait dans mon code exemple , je ne récupère pas les infos ? (le contenu texte de la balise html)
    $moi= (:nono: !== :oops:) ? :king: : :triste: ;

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2022
    Messages : 7
    Par défaut
    oui il me donne les 3 que je veux en texte brut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <span class="ACrL2ZACrpbG1zL2dlbnJlLTEzMDI1Lw== dark-grey-link">Action</span> ['ACrL2ZACrpbG1zL2dlbnJlLTEzMDI1Lw==', 'dark-grey-link'] Action
    <span class="ACrL2ZACrpbG1zL2dlbnJlLTEzMDAxLw== dark-grey-link">Aventure</span> ['ACrL2ZACrpbG1zL2dlbnJlLTEzMDAxLw==', 'dark-grey-link'] Aventure
    <span class="ACrL2ZACrpbG1zL2dlbnJlLTEzMDIxLw== dark-grey-link">Science Fiction</span> ['ACrL2ZACrpbG1zL2dlbnJlLTEzMDIxLw==', 'dark-grey-link'] Science Fiction
    et je voudrai recuperrer que Action, Aventure et science fiction

  6. #6
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    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 323
    Par défaut
    comme dit plus haut, ta question n'a pas de sens, sinon que tu n'as même pas lu / testé mon code exemple

    Tu cherches a récupérer le contenu texte dans tes balises html
    $moi= (:nono: !== :oops:) ? :king: : :triste: ;

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2022
    Messages : 7
    Par défaut
    je n'arrive a sortir que science fiction avec tag.get_text())

    pas les 2 premiers action ni aventure



    j'ai trouvé dsl c'est bon

    y a t'il un moyen de l'afficher en ligne plutot q'en colone?
    genre : action, aventure, et science fiction

  8. #8
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    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 323
    Par défaut
    Citation Envoyé par anistos Voir le message
    j’apprends a scraper
    Attention, cela simple hors de propos si tu n'as pas les bases. Tu sembles à peine (pour être gentil) comprendre les listes et les boucles, avant de faire ton projet, il y a un minimum à connaitre sur python. Et existe des tutos sur ce site

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    un moyen de l'afficher en ligne plutot q'en colone?
    Oui, c'est très simple mais si tu ne maitrises pas les bases ...
    Et puisque je n'ai aucune idée de la structure de ton code (je ne suis pas dans ton dos), je ne risque pas de te donner une piste.

    EDIT
    j'ai vu print
    c'est une solution (sans doute pas la meilleure). note: "voir" une foncttion sans lire la doc === aucune utilité
    $moi= (:nono: !== :oops:) ? :king: : :triste: ;

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2022
    Messages : 7
    Par défaut
    j'ai vu print mais

    me l'affiche quand meme sur 3 lignes

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2022
    Messages : 7
    Par défaut
    tu as tout a fait raison
    cela fait 3 jours que je m’intéresse a python
    c'est juste pour faire un site en local pour mes videos
    pour que cela soit plus agréable qu'une liste de titres de films sous windows
    donc un peu de html un peu de css un peu de python
    je ne suis pas un fana de la programmation je ne suis pas dev
    c'est pour le plaisir de ne pas mourir bete
    et en tous cas je te remercie d'avoir repondu a mes questions et surtout rapidement
    au plaisir

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2022
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2022
    Messages : 7
    Par défaut
    si tu pouvais juste me repondre a la derniere question pour print

    pour me l'afficher sur une ligne avec des , svp

  12. #12
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    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 323
    Par défaut
    comme écrit plus haut, je ne suis pas dans ta machine ! tout dépend de ta structure et de ce que tu comptes faire de ces datas plus tard. Puisque tu ne fournis strictement rien, je ne peux donner une solution !

    Comme indiqué plus haut, la pire des solutions, si tu désires juste afficher et ne pas garder une trace de ces rubriques pour plus tard, c'est simplement d'utiliser print.

    Citation Envoyé par papajoker Voir le message
    note: "voir" une fonction sans lire la doc === aucune utilité
    Et comme déjà indiqué, je répete encore et encore, il suffit de bien lire la documentation sur cette function.
    Je n'ai aucune envie de lire la doc pour toi et pas de te faire un copier/coller à ta place. Si tu débutes en python sans vouloir lire une doc, alors je ne peux rien pour toi.
    $moi= (:nono: !== :oops:) ? :king: : :triste: ;

  13. #13
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Bonjour,
    papajoker : Je pense que la question relative au print était comment afficher le print de ton code sur une même ligne
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Envie de développer pour Android avec Python? Pensez à Kivy
    Kivy c'est aussi ça: https://www.youtube.com/@MPython_Alaplancha

  14. #14
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    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 323
    Par défaut
    mais mon code n'est valide uniquement que si le seul but du script est d'afficher une ligne au format texte

    - Je suppose qu'il va en faire des choses de ces rubriques ? si stockées, ce qui me parait logique, alors la solution est différente.
    - que le script va continuer ? il est plus logique de mettre tout cela dans une fonction, et la pire des choses est de faire un print dans la fonction. je ne vais certainement pas l'encourager dans cette voie. Le problème est alors la structure

    un peu de html un peu de css un peu de python
    Donc ici, le but est de faire un serveur html avec python ? donc une sortie html (qui ne gère pas les retours à la ligne) ? Donc, je suppose que la question est justement par curiosité et même pas utile ? Et moi, lorsque je suis curieux, ma première pensée est toujours tournée vers la doc.

    Si son but est juste d'apprendre a utiliser print(), la doc donne bien un paramètre supplémentaire pour ne pas avoir le retour à la ligne. Apprendre ce n'est pas demander à chaque babiole, mais d'être le plus autonome possible.
    Puisqu'il est admin réseau , la lecture de doc est normalement déjà un réflexe ? et pas une contrainte.

    Mais, je suppose qu'il ne comprend pas bien les list et boucles, donc, si oui, ce genre de détails d'affichage n'est clairement pas une priorité.
    $moi= (:nono: !== :oops:) ? :king: : :triste: ;

  15. #15
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Qu’en est-il @anistos?
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Envie de développer pour Android avec Python? Pensez à Kivy
    Kivy c'est aussi ça: https://www.youtube.com/@MPython_Alaplancha

  16. #16
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    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 323
    Par défaut
    On ne connait rien de ces besoins, et puisque qu'il est grand débutant, est-il capable de te répondre ?

    Si, il ne cherche pas à comprendre, et ne s'intéresse aucunement à apprendre à son rythme, je peux lui balancer un truc immonde qui répond a tous ces besoins immédiats, du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print("rubriques:", ", ".join(t.get_text() for t in soup.select("*[class^=toto]")))
    print("rubriques:", "|".join(f"{t.get_text():^12}" for t in soup.select("*[class^=toto]")))
    print("rubriques:", *[t.get_text() for t in soup.select("*[class^=toto]")])
    --------

    Pour des colonnes, 9 fois sur 10 au moins, utiliser le print dans une boucle est une horreur, un truc de débutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    print("rubriques :", ...)
    for s in ...
        # horreur si il y a en plus un séparateur
        print(s, ...)
    print()
    Non merci, montrer une structure pareille n'a pas de sens, c'est justement ce que doit éviter le codeur.

    -----------

    je lui est demandé de lire la doc, a la limite, je veux bien qu'il ne la comprenne pas. Mais alors, il n'a qu'a demander un éclaircissement sur une partie de cette doc et non insister pour avoir un code tout fait.
    $moi= (:nono: !== :oops:) ? :king: : :triste: ;

  17. #17
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Je ne peux pas répondre à sa place, d'où ma question. En, tout cas c'est l'interprétation que j'en ai faite et c'est la raison pour laquelle j'ai mis comme appréciation -1 à la demande concernant le print.
    Si mon interprétation était erronée je m'en excuse.
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Envie de développer pour Android avec Python? Pensez à Kivy
    Kivy c'est aussi ça: https://www.youtube.com/@MPython_Alaplancha

  18. #18
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 545
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 545
    Par défaut
    Dans ma compréhension, il doit faire une boucle (comme dans le 1er exemple de papajoker), et afficher la valeur, donc à chaque print, il est normal que ça affiche "en colonne".
    Donc pour afficher "en ligne", il faut soit "accumuler" les valeurs pour former la chaine au fur et à mesure et l'afficher à la sortie de la boucle (ou mieux les mettre dans un tableau et utiliser le paramètre sep avec l'opérateur * devant le tableau), soit dire au print que l'on ne va pas aller à la ligne en modifiant son paramètre "end" (end=" ," par exemple).

  19. #19
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    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 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par anistos Voir le message
    cela fait 3 jours que je m’intéresse a python
    c'est juste pour faire un site en local pour mes videos
    3 jours c'est un peu djust quand-même non ?

    Citation Envoyé par anistos Voir le message
    si tu pouvais juste me repondre a la derniere question pour print
    pour me l'afficher sur une ligne avec des , svp
    Ben... tout dépend de comment sont récupérées/stockées tes données. Le print() n'est qu'un outil assez bête : tu lui donnes un truc, il t'affiche le truc. Mais si le truc contient (par exemple) des "retour charriot" (ce qu'on nomme aussi des "fins de lignes"), alors l'écran lui, chaque fois qu'il lit un "fin de ligne", passe le curseur à la ligne suivante. De là on voit 3 lignes mais ce n'est qu'un affichage "transformé" de la data.

    Si maintenant tu veux afficher une seule ligne, il te faut alors ne pas afficher les "retour charriot". Ca peut être par exemple...
    • remplacer les "retour charriot" par des virgules => print(data.replace('\n', ','))
    • découper la data sur chaque ligne, ce qui donnera donc 3 éléments, et demander à les joindre par une virgule => print(",".join(data.splitlines()))

    Bref à toi d'adapter ce que tu as avec ce que tu peux en faire...
    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]

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

Discussions similaires

  1. Instancier une classe aléatoirement
    Par delta07 dans le forum Général Java
    Réponses: 8
    Dernier message: 19/02/2015, 15h45
  2. [Débutant] Comment affecter aléatoirement les pixels aux classes ?
    Par Imène_23 dans le forum Images
    Réponses: 9
    Dernier message: 30/05/2011, 09h05
  3. appliquer une class aléatoirement
    Par gtraxx dans le forum jQuery
    Réponses: 2
    Dernier message: 15/06/2009, 22h25
  4. Réponses: 2
    Dernier message: 15/02/2009, 18h06
  5. recuperer une Classe objet aléatoirement
    Par 123quatre dans le forum ActionScript 3
    Réponses: 7
    Dernier message: 26/01/2009, 23h02

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