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 :

Fonction qui réunit tous les liens/urls trouvés dans une pages. [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    informatique
    Inscrit en
    Août 2018
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2018
    Messages : 26
    Par défaut Fonction qui réunit tous les liens/urls trouvés dans une pages.
    Bonjour,

    Je suis débutante en langage python. J'essaye de créé une fonction qui rassemble tous les liens/urls trouvés dans une page.

    Voici ce que j'ai fait pour l'instant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import requests 
     
    def liens(page) :
        response = requests.get(page)
        data = response.text
        html = str(data) 
        for i in range(len(html)):
            if html[i] == '<' and html[i+1] == 'a' and html[i+3] == 'h':
                pos = html[i:].find('</a>')
                url = html[i: i+pos]
                urls = url.split('"')[1]
                if urls.startswith('http') == True :
                    print (urls)
    Celui - ci marche pour certains liens comme par exemple : https://www.google.fr ou bien https://www.python.org

    Mais pour certains liens, la fonction affiche une erreur :"Index Out of range", comme par exemple : https://stackoverflow.com/questions/...on-web-crawler

    Qu'est ce que je n'ai pas compris ?

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Pour faire ça, je préfère utiliser beautifulsoup (https://pypi.org/project/beautifulsoup4/). Il a l'avantage dêtre puissant, mais aussi tolérant pour les pages mal écrites.

    Exemple (Python 3):

    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
    #!/usr/bin/python3
    # -*- coding: utf-8 -*-
     
    import urllib.request
    from bs4 import BeautifulSoup
     
    #url = "https://www.google.fr/"
    #url = "https://www.python.org/"
    url = "https://stackoverflow.com/questions/39565730/simple-python-web-crawler"
     
    page = urllib.request.urlopen(url)
    soup = BeautifulSoup(page, from_encoding=page.info().get_param('charset'), features="html.parser")
     
    for link in soup.find_all('a', href=True):
        print(link['href'])
    Ce code fonctionne avec l'url qui, chez toi, ne marche pas.

  3. #3
    Membre averti
    Femme Profil pro
    informatique
    Inscrit en
    Août 2018
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2018
    Messages : 26
    Par défaut
    Merci, en effet c'est plus facile

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

Discussions similaires

  1. [Débutant] Fonction qui copie tous les fichiers avec une extension ndf
    Par souhail72 dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 25/05/2016, 10h33
  2. Réponses: 14
    Dernier message: 27/08/2014, 22h46
  3. Réponses: 8
    Dernier message: 19/10/2011, 19h03
  4. Placer tous les liens à l'intérieur d'une div
    Par d10g3n dans le forum jQuery
    Réponses: 1
    Dernier message: 13/01/2010, 17h17
  5. Réponses: 0
    Dernier message: 30/06/2009, 09h47

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