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

Web Perl Discussion :

Télécharger un fichier après login avec Mechanize


Sujet :

Web Perl

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    26
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Mai 2005
    Messages : 26
    Points : 19
    Points
    19
    Par défaut Télécharger un fichier après login avec Mechanize
    Bonjour à tous,

    Je suis abonné au journal lemonde.fr et j'aimerai faire un script perl me permettant de télécharger la version pdf automatiquement.

    Après quelques recherches, je me suis lancé dans la création d'un script perl utilisant la librairie Mechanize.

    Voici ou j'en suis :

    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
     
    use WWW::Mechanize;
    use Crypt::SSLeay;
     
    my $login = "monMail@xxx.com";
    my $password = "monMotDePasse";
    my $url = 'http://www.lemonde.fr/journalelectronique/donnees/protege/20101002/Le_Monde_20101002.zip';
     
    $bot = WWW::Mechanize->new();
    $bot->cookie_jar(
            HTTP::Cookies->new(
                file           => "cookies.txt",
                autosave       => 1,
                ignore_discard => 1,
            )
    );
     
    $response = $bot->get($url);
     
    $bot->form_number(1);
    $bot->field( login => $login );
    $bot->field( password => $password );
    $response =$bot->click();
     
    my $response = $bot->get($url);
    my $filename = $response->filename;
     
    if (! open ( FOUT, ">$filename" ) ) {
        die("Could not create file: $!" );
    }
    print( FOUT $bot->response->content() );
    close( FOUT );
    En sortie j'aimerai avoir l'archive zip, mais j'ai un fichier html avec un contenu qui n'a rien a voir.

    Etant donné que je débute avec perl, est-ce que vous pourriez m'aider en me disant ce qui peut poser problème dans mon script.

    Merci d'avance,

  2. #2
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    Salut !

    As tu lu le contenu de la page html ? Il est possible qu'elle contienne un tas d'insultes lié à ce que tu cherches à faire, ou peut-etre une redirection qu'il faudra capturer pour envoyer le robot dessus, etc... (trop de pistes à explorer pour pouvoir t'aider efficacement, il nous faut plus d'infos sur le retour de ton script)
    Pour sûr il faut te méfier, lors de l'enregistrement du fichier, du format dans lequel tu crées ton fichier (binaire ou ascii) ainsi que du volume que représente ce fichier, qui pourrait être trop gros pour être stocké en mémoire avant enregistrement et demanderait donc à enregistrer le fichier à mesure qu'il est dl. (faut que je retrouve le bout de code qui fait ca bien, je l'ai plus en tête)

    @+
    Mr6

  3. #3
    Membre actif
    Avatar de TheDrev
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Points : 263
    Points
    263
    Par défaut
    vous pouvez utiliser la fonction mirror http://search.cpan.org/dist/WWW-Mech...3Emirror%28%29

    $ua->mirror( $url, $filename )

    This method will get the document identified by $url and store it in file called $filename. If the file already exists, then the request will contain an "If-Modified-Since" header matching the modification time of the file. If the document on the server has not changed since this time, then nothing happens. If the document has been updated, it will be downloaded again. The modification time of the file will be forced to match that of the server.
    ou faire un appel système a `wget`
    all your base are belong to us.

Discussions similaires

  1. Télécharger un fichier du Web avec PyQt4/QThread
    Par tyrtamos dans le forum PyQt
    Réponses: 1
    Dernier message: 16/03/2011, 12h25
  2. [Zip] Droits sur fichiers après extraction avec PclZip
    Par Invité dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 21/04/2008, 16h37
  3. Réponses: 5
    Dernier message: 27/06/2006, 10h08
  4. [VB6] Télécharger un fichier avec progression
    Par tebonb dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/12/2005, 18h34
  5. Réponses: 2
    Dernier message: 19/12/2005, 13h15

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