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 :

aspirateur site web python3 (python2 initialement)


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut aspirateur site web python3 (python2 initialement)
    Bonjour,
    Je sais que le problème a été abordé maintes fois mais je ne trouve pas mon bonheur.

    Voici le code que j'ai pour télécharger un fichier sur un site :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     # en python 2.7
    import urllib2
     
    url="http://site/repertoire/fichier.txt"
     
    fichier = urllib2.urlopen(url)
    sortie = open('test.txt','wb')
    sortie.write(fichier.read())
    sortie.close()
    Je souhaite maintenant parcourir tout le répertoire "repertoire" et télécharger tous les fichiers txt (ou tous les fichiers même).
    J'imagine qu'il faut une boucle pour parcourir la page mais je ne vois pas comment faire. Si quelqu'un peut me donner une piste... (je précise : niveau débutant en python)

  2. #2
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Je me réponds à moi-même et je passe à côté pour un problème d'erreur de téléchargement...

    Voici mon code dans l'état actuel des choses, j'ai réussi à lister les fichiers.

    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
    import urllib,urllib2, re
     
    from BeautifulSoup import BeautifulSoup
     
    url="http://mon site.com/"
     
    f = urllib2.urlopen(url)
    soup = BeautifulSoup(f)
    print soup
    for link in soup.findAll('a'):
    	url_fich=str(url)+str(link.get('href'))
    	nom_fich=str(link.get('href'))
    	print nom_fich
    	print url_fich
    	print link.get('href')
    	urllib.urlretrieve(url_fich,r'/home/'+nom_fich)

  3. #3
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    A nouveau moi...

    Pourquoi cela ne marche pas avec la dernière ligne de ma boucle finale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    urllib.request.urlretrieve(url_fich,nom_fich)
    alors que la dernière ligne marche-t-elle sinon ? Quelqu'un a une idée ?

    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
    #! /usr/bin/env python
    #-*- coding: utf-8 -*-
     
    # avec python3
     
    from bs4 import BeautifulSoup
    import urllib.request
     
     
    url="http://www.math.ens.fr/~millien/"
     
    redditFile = urllib.request.urlopen(url)
    redditHtml = redditFile.read()
    redditFile.close()
     
    soup = BeautifulSoup(redditHtml)
    redditAll = soup.find_all("a")
    for links in soup.find_all('a'):
    	print (links.get('href'))
    	url_fich=str(url)+str(links.get('href'))
    	nom_fich=str(links.get('href'))
    	print (type(nom_fich))
    	print (type(url_fich))
    	urllib.request.urlretrieve(url_fich,nom_fich)
     
     
    urllib.request.urlretrieve(url+"CVPierreMillien.pdf","cv.pdf")
    Je précise que j'ai pris un site au hasard mais qui existe...

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Salut,
    Vous ne montrez pas ce que contient "nom_fich". Il semble calcule en fonction de l'URL récupérée dans le /href/. Rien ne dit que ce soit un nom de fichier valide et qui plus est désignant un sous-répertoire.
    Pourquoi ne pas essayer avec un nom en dur comme 'toto.txt'?
    Cela vous permettrait de ne plus avoir le nez sur /urlretrieve/ mais sur le sens des paramètres passes.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Merci pour votre réponse,
    Comme j'ai beaucoup de fichiers à télécharger, je souhaite qu'ils gardent leur nom d'origine. C'est pour cette raison que je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom_fich=str(links.get('href'))
    Pour moi, chaque fichier est ainsi enregistré sous son nom d'origine.
    Je commets une erreur ?

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    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 738
    Par défaut
    Citation Envoyé par marco056 Voir le message
    Merci pour votre réponse,
    Comme j'ai beaucoup de fichiers à télécharger, je souhaite qu'ils gardent leur nom d'origine. C'est pour cette raison que je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom_fich=str(links.get('href'))
    Pour moi, chaque fichier est ainsi enregistré sous son nom d'origine.
    Je commets une erreur ?
    /href/ contient une URL.
    Une URL n'est pas toujours un nom de fichier relatif ni valide.
    Quel est le rapport entre le fichier qui sauvegarde une page HTML et les fichiers que vous voulez telecharger?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. Créer un site web - en quel langage ?
    Par Thierry92 dans le forum Débuter
    Réponses: 96
    Dernier message: 25/04/2024, 22h24
  2. aspirateur d'email pour site web
    Par Gregco dans le forum Internet
    Réponses: 4
    Dernier message: 05/11/2010, 10h23
  3. [Aspirateur] téléchargement de sites web
    Par Seifer dans le forum Dépannage et Assistance
    Réponses: 3
    Dernier message: 11/12/2006, 10h52
  4. [Juridique] Légal les aspirateurs de site web ?
    Par Hedi1 dans le forum Juridique
    Réponses: 7
    Dernier message: 10/10/2006, 13h10

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