Heu voila je me suis fait un petit web crawler , il ne bug pas a proprement parler mais il ne renvoie aucun résultat le code est hybride de script récup sur le forum voici le "monstre" (heu monstre qui marche pas ).
J'aimerais donc savoir d'ou vient mon bug parce que je ne le trouve pas du tout
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 #!C:/PROGRA~1/Perl/bin/perl.exe -w use cgi::carp; use strict; use LWP::UserAgent; use HTTP::Response; use HTTP::Request; use LWP::RobotUA; use URI; #--------------------------------------- # Creation de l'agent # Create the users agent #--------------------------------------- my $VERSION = "Bot/1.1 (+http://shunix.com)"; my $ua = LWP::UserAgent->new; $ua->agent('Mozilla/5.0 (compatible; Bot/1.1)'); $ua = new LWP::RobotUA('Mozilla/5.0 (compatible; Bot/1.1)', '!!!!!@free.fr'); #--------------------------------------- # Configuration du robot # Configure the robot #--------------------------------------- $ua->protocols_allowed( ['http'] ); $ua->timeout(4); $ua->requests_redirectable( ['HEAD'] ); $ua->max_redirect(10); $ua->protocols_forbidden( ['mailto','https','gopher','ftp','socks','file'] ); #---------------------------------------- # Chargement des la liste des site # Loading site list #---------------------------------------- my @url = ("http://free.fr"); @url = allow(@url); #---------------------------------------- # Configuration des variales # Configuring the variable #---------------------------------------- $| = 1; my %urls; my $url = join("", @url); #---------------------------------------- # Robot code # Code du robot #---------------------------------------- sub explore { foreach $url (keys %urls) { my $base_uri = URI->new( $url ); my $request = new HTTP::Request('GET', $url); my $response = $ua->request($request); if ($response->is_success) { # print $response->content; # Hear we take the good page my $link = $response->content; print "$link\n"; my @links; while (my $content =~ m/(?:<a [^>]+ href=|<frame [^>]+ src=) (?: "((?:[^"\\]|\\")+)" ) [^>]*> /xig){ push @links, $1; } @links=(@links, $link); foreach my $lien ( @links) { $lien = URI->new_abs( $lien, $base_uri )->as_string(); $urls{$lien}++; if( $urls{$lien} == 1 ) { $url = ""; $url = $lien; &explore($url); # Faire du récusif a l'arrache print "Nouveau lien : $lien\n"; } } } } } #---------------------------------------- # Supprésion des extentions interdites #---------------------------------------- use Regexp::Assemble; { # scope pour rendre $re 'statique' my $re; sub allow { if( not $re ) { my $r = Regexp::Assemble->new; $r->add( "\\.$_\$" ) for qw/ htm asp aspx nux mspx cfm html xhtml jhtml php php3 php4 shtml jsp php4 php5 jpg jpeg png gif doc rtf pdf xls pm shtm /; $re = $r->re; } return grep { /$re/ } @_; } }
Pour ceux que sa intéresse comme web crawler super rapide il y a Larbin en C++ et www::robot mais je ne connais pas du tout ces perf , larbin lui peut ramener 5 000 000 de pages par jour sur un réseau de 2mb.
Si quelqu'un trouve comment le compiler avec VC++ 2005 express faite moi signe
Partager