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 :

Bug de HTTP::Cookies et WWW::Robotrules ?


Sujet :

Web Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de goblin
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 62
    Par défaut Bug de HTTP::Cookies et WWW::Robotrules ?
    kikoo c encore moi lol .


    J'ai récupéré un spider sur ce forum mais celui-ci présente deux bugs qui semble venir de http::cookies et www::robotrules , perl me renvoie les erreurs suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Use of uninitialized value in string at G:/Program Files/Perl/site/lib/WWW/RobotRules.pm line 139.
    Use of uninitialized value in string eq at G:/Program Files/Perl/site/lib/WWW/RobotRules.pm line 141.
    Use of uninitialized value in string eq at G:/Program Files/Perl/site/lib/WWW/RobotRules.pm line 141.
    Can't call method "scheme" on an undefined value at G:/Program Files/Perl/site/lib/HTTP/Cookies.pm line 44
    Je lutte avec ces erreurs depuis ce matin , et comprend pas d'ou elles peuvent bien venir , peut-être que certain lien ne sont pas bien formatté :

    Voici le code du bot :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    #!/usr/bin/perl -w
    use strict;
    use URI::URL;
    use HTTP::Status;
    use HTTP::Request;
    use HTTP::Cookies;
    use HTTP::Headers;
    use HTTP::Response;
    use HTML::LinkExtor;
    use LWP::RobotUA;
    require WWW::RobotRules::AnyDBM_File;
     
     
    #...........................................................................# 
    #                                     Config                                # 
    #...........................................................................# 
     
    $| = 1;
     
    my $VERSION = "MonRobot/0.1 (+http://dirthangel.free.fr)"; 
     
    my $rules = WWW::RobotRules::AnyDBM_File->new('Mozilla/5.0 (compatible; MonRobot/0.1 +http://dirthangel.free.fr)', 'cachefile'); 
    my $ua = LWP::RobotUA->new('Mozilla/5.0 (compatible; MonRobot/0.1 +http://dirthangel.free.fr)', 'hdd@free.fr', $rules); 
       $ua->delay(1/60); 
       $ua->host_wait(0); 
       $ua->timeout(3); 
       $ua->env_proxy; 
       $ua->max_redirect(10); 
       $ua->protocols_allowed( [ 'http' ] ); 
       $ua->protocols_forbidden( [ 'file', 'mailto', 'https', 'ftp', 'socks', 'gopher', 'wais' ] ); 
       $ua->requests_redirectable( [ 'HEAD' ] ); 
     
    my $cookie_jar = HTTP::Cookies->new( 
        file => 'MonRobot_cookies.dat', 
        autosave => 1, 
      ); 
     
       $ua->cookie_jar($cookie_jar); 
     
    my $headers = HTTP::Headers->new( 
        Accept => [qw(text/html)] 
      ); 
     
       $ua->default_headers($headers); 
     
     
    my (@web, $find, @push, @webx, @exclude); 
     
    #...........................................................................# 
    #                                   "Options"                               # 
    #...........................................................................# 
     
       if (!$ARGV[0]) { 
          print "Le robot a été lancé sans arguments :@\n"; 
          exit(0); 
       } 
     
       if ($ARGV[0] =~ /^http:\/\//g ) { 
            robot(@ARGV); 
       } 
     
     
    #...........................................................................# 
    #                                  Le robot                                 # 
    #...........................................................................# 
     
    sub robot { 
      foreach my $url (@_) { 
     
         # Fabrication d'une requete 
         my $request = HTTP::Request->new('GET', $url); 
     
         # Execution de la requete 
         my $res = $ua->request($request); 
     
         # Etat de la requete 
         if ($res->is_success) { 
     
              my $code = $res->content; 
     
              my $date = date(); 
     
              my $base = $res->base; 
     
              my $content_type = $res->content_type; 
     
                    my @page = ( 
                           "$code","$url", 
                           "$date", "$content_type", 
                    ); 
     
     
                        print "$page[0]\n"; 
                        print "$page[1]\n"; 
                        print "$page[2]\n"; 
                        print "$page[3]\n"; 
     
                    @webx = links($code, $base); 
     
         } 
          else 
         { 
            print "Error: " . $res->status_line . "\n"; 
         } 
       } 
      if (!@webx) { 
        exit(0); 
      } 
       else 
      { 
        robot(@webx); 
      } 
    } 
     
     
    #...........................................................................# 
    #                            On cherche les liens                           # 
    #...........................................................................# 
     
    sub links { 
     my ($a, $b) = @_; 
        my $p = HTML::LinkExtor->new(\&callback); 
           $p->utf8_mode; 
           $p->parse($a); 
       @web = map { $_ = url($_, $b)->abs; } @web; 
     return @web; 
    } 
     
     
    #...........................................................................# 
    #                               Extract links                               # 
    #...........................................................................# 
     
    sub callback { 
      my($tag, %attr) = @_; 
      return if $tag ne 'a'; 
      push(@web, values %attr); 
    } 
     
     
    #...........................................................................# 
    #                                Date du jour                               # 
    #...........................................................................# 
     
    sub date { 
      my @tab_date =localtime(time); 
      my $jour = $tab_date[3]; 
      my $mois = ($tab_date[4]+1); 
      my $annee =  ($tab_date[5]+1900); 
      return ("$jour/$mois/$annee"); 
    }
    Merci de votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 74
    Par défaut
    J'ai le meme probleme je comprend pas d'ou cela peu venir par exemple ton script il est super simple pourtant tu as le meme bug vraiment bizarre

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/04/2011, 22h42
  2. [Delphi/WebService] Comment gérer une session HTTP (cookie) ?
    Par adrien_as dans le forum Web & réseau
    Réponses: 3
    Dernier message: 20/03/2009, 11h55
  3. Besoin d'un ti coup de mains avec WWW::RobotRules
    Par scaleo dans le forum Modules
    Réponses: 3
    Dernier message: 06/09/2005, 12h27
  4. [web]Ti problème avec www::robotrules
    Par vodevil dans le forum Web
    Réponses: 1
    Dernier message: 27/06/2005, 09h55

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