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 :

supression des premiers caractères de chaque éléments d'une liste


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    chomaaage
    Inscrit en
    Septembre 2024
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : chomaaage
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2024
    Messages : 2
    Points : 1
    Points
    1
    Par défaut supression des premiers caractères de chaque éléments d'une liste
    Bonjour tout le monde,
    Je suis coincé sur un petit programme que j'essaye de faire. Dans l'idée le programme sert à récupérer les url d'une page web pour les pings après pour vérifier si ils sont encore actif, cependant je bloque sur le formatage des liens, voici mon 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
    from requests import get
    from bs4 import BeautifulSoup
    import html5lib
    from pythonping import ping
     
    url = "https://old.reddit.com/r/Piracy/wiki/megathread/movies_and_tv#wiki_.1F4D1_.279C_streaming"
     
    response = get(url)
     
    source = None
     
    source = response.text
     
    if source:
            soup = BeautifulSoup(source, "html.parser")
            links = [link.get("href") for link in soup("a")]
     
    i = 0
     
     
    for link in links:
            if links[i].startswith("https://"):
                    if "reddit" in links[i]:
                            links.remove(links[i])
                            i+=1
                    else:
                            i+=1
     
            else:
                    links.remove(links[i])
                    i += 1
     
     
    print(links)
     
    input()
    Mon problème pour l'instant c'est que j'aimerais pouvoir enlever le "https://" de chaque lien que je récupère pour pouvoir ensuite ping chaque lien un par un mais je n'arrive pas à les supprimer, j'ai essaye le .replace mais ça me renvoi quelque chose comme "no attribute replace for list object" ou quelque chose comme ça. Je n'ai pas trouvé de solution convenante alors merci d'avance de votre aide.
    (ps le """if "reddit" in links[i]""" ne fonctionne pas non plus pour supprimer les liens qui renvoit vers reddit donc je suis aussi preneuse d'une solution pour ça aussi <3)

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

    à la ligne 16 de votre script, normalement ceci doit fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    links = [link.get("href").replace("https://","") for link in soup("a")]
    Exemple rapide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    toto = ["http1","http2","3"]
    toto = [elem.replace("http","") for elem in toto]
    print(toto)

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    chomaaage
    Inscrit en
    Septembre 2024
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 22
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : chomaaage
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2024
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Arioch Voir le message
    Bonjour,

    à la ligne 16 de votre script, normalement ceci doit fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    links = [link.get("href").replace("https://","") for link in soup("a")]
    Exemple rapide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    toto = ["http1","http2","3"]
    toto = [elem.replace("http","") for elem in toto]
    print(toto)
    Merci de la réponse mais ça ne fonctionne pas non plus, je reçoit cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Traceback (most recent call last):
      File "C:\Users\grego\OneDrive\Desktop\pingStream.py", line 16, in <module>
        links = [link.get("href").replace("https://","") for link in soup("a")]
                 ^^^^^^^^^^^^^^^^^^^^^^^^
    AttributeError: 'NoneType' object has no attribute 'replace'
    [Finished in 1.5s]

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 976
    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 : 3 976
    Points : 7 404
    Points
    7 404
    Par défaut
    Bonjour

    Traceback (most recent call last):
    File "C:\Users\grego\OneDrive\Desktop\pingStream.py", line 16, in <module>
    links = [link.get("href").replace("https://","") for link in soup("a")]
    ^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'replace'
    Oui ça veut simplement dire que link peut prendre la valeur None, il faut donc filtrer ce cas dans ta comprehension list.

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 544
    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 544
    Points : 37 187
    Points
    37 187
    Par défaut
    Citation Envoyé par cybcyb Voir le message
    Merci de la réponse mais ça ne fonctionne pas non plus, je reçoit cette erreur
    plutôt que de recopier du code sans trop comprendre, vous aviez écrit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    i = 0
    for link in links:
            if links[i].startswith("https://"):
                    ...
    Lorsqu'il y a ..., on sait que ça commence par ... et quand faire le replace via link[i].replace(...) à cet endroit/ce moment.

    - W
    note: vu les difficultés que vous avez pour faire une boucle avec des conditions aussi simples, ca serait bien de passer un peu de temps dans les tutos.

  6. #6
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 245
    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 245
    Points : 4 742
    Points
    4 742
    Par défaut
    bonjour et bienvenue

    Citation Envoyé par cybcyb Voir le message
    ne fonctionne pas non plus pour supprimer les liens qui renvoit vers reddit donc je suis aussi preneuse d'une solution pour ça aussi <3)
    Tout ce bloc est surtout completement inutile (voir "les filtres" donné en #4)
    Dans ce block : logique aux fraises ? entre-autre :
    - pourquoi remplir une variable link mais jamais utilisée ?
    - pourquoi faire des incréments dans chaques conditions ?

    -------

    j'aimerais pouvoir enlever le "https://"
    existe la méthode str.removeprefix

    -------

    exclure certains liens "manuellement" ...
    Ici, c'est une grosse méconnaissance de ta librairie ! tu dois normalement cibler tes liens avec ta lib BeautifulSoup (en fonction du code html de la page)

Discussions similaires

  1. Sélectionner le premier caractère de chaque ligne d'une colonne
    Par Lilix dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 07/04/2015, 13h04
  2. module SOAPpy et la récuperation des premier lien que google donne pour une donné
    Par zakaria spearfishing dans le forum Général Python
    Réponses: 5
    Dernier message: 20/05/2013, 03h12
  3. FAQ : Comment alterner les couleurs de chaque élément d'une liste déroulante ?
    Par yoghisan dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 04/06/2007, 15h15
  4. Réponses: 4
    Dernier message: 25/04/2007, 17h23
  5. Réponses: 5
    Dernier message: 09/05/2006, 16h57

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