Forum Programmation.python récupérer la liste d'un répertoire web

Posté par  .
Étiquettes : aucune
0
29
août
2004
Bonjour,

Je voudrais récupérer la liste des fichiers présents dans un répertoire d'un site web : http://www.lesite.com/lerepertoire/(...)

dans une liste sous Python. L'index du répertoire en question est accessible (en tapant cette adresse dans un navigateur je vois tous les fichiers présents).

Comment puis-je faire ?
  • # urllib + regexp

    Posté par  (site Web personnel) . Évalué à 2.

    Tu récupères l'index avec urllib2 et ensuite tu parses le contenu, non ?
    Les cibles des liens sont entourés de guillemets et commencent par "http://", ça devrait suffire pour construire une belle regexp. Ensuite tu lui applique la méthode findall() et ça devrait être bon.
    Fais gaffe à bien compiler ta regexp en "non-greedy" mais sinon je pense que ça devrait bien se passer
  • # Ben, euh ?

    Posté par  . Évalué à 1.

    L'index du répertoire en question est accessible (en tapant cette adresse dans un navigateur je vois tous les fichiers présents).

    Même pô vrai ! J'ai cliqué sur le lien, ben... rien !

    ;-)

    Ok, je --> []
  • # En une ligne...

    Posté par  . Évalué à 2.

    La simplicité de Python et la puissance des expressions régulières permet de le faire en une ligne :

    re.findall("(?i)href=\"(?<file>.+)\">(?P=file)</a>",urllib2.urlopen("http://www.lesite.com/lerepertoire/").read())

    C'est peut-être pas ce qu'il y a de plus lisible, mais ça renvoie bien la liste des fichiers.
    • [^] # Re: En une ligne...

      Posté par  . Évalué à 1.

      Merci à vous !

      Comme je cherchais à dresser la liste des images, j'ai utilisé :

      listedesimages = re.findall('.jpg\">(.*)',urllib2.urlopen(Serveur).read()
      )
      for image in listedesimages:
      image = Serveur + image
      Liste.append(image)

      ou Serveur est l'URL du répertoire contenant ces images.
    • [^] # Re: En une ligne...

      Posté par  (site Web personnel) . Évalué à 2.

      <troll>
      s/python/perl/g
      </troll>
      • [^] # Re: En une ligne...

        Posté par  (site Web personnel) . Évalué à 2.

        Je précise quand même : le fait de pouvoir tout faire en une ligne avec des expressions régulières partout, quitte à ce que ce soit pas lisible, c'est plutôt l'apannage de perl tout de même.
        En python on préfèrera la lisibilité (et puis de toute façon faudra faire "import re" et "import urllib2" :) )

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.