Bonjour
Il semblerai que j'ai un probleme avec mon code perl...Je pense que cela vient du regex.
Je souhaite extraire des url de plusieurs sites web.
p1, p2, p3 fonctionnent pour tous les types d'url excepté s'il y a un tiret et www. Ex: mon-site.com sera trouvé mais pas www.mon-site.com
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 sub parseHosts { my ($url) = @_; my $content = `curl --header "User-agent: " $url 2>&1`; my $hostpattern = "[a-z0-9][a-z0-9-]*[.][a-z.]+[a-z]"; my $p1 = "value=[\"]($hostpattern)[\"]"; my $p2 = "<li>($hostpattern)"; my $p3 = "<a>($hostpattern)"; my $c = 0; while ($content =~ m/($p1)|($p2)|($p3)/igs) { if ($maxhostsperurl > 0 && ++$c > $maxhostsperurl) { print "<b>Thread " . threads->self()->tid() . " exiting, after $maxhostsperurl hosts in test mode.</b> Set \$maxhostsperurl to 0 for a full run. <br/>\n"; return; } if ($2) { processHost($2); } elsif ($4) { processHost($4); } elsif ($6) { processHost($6); } } }
ou monsite.ho-la.com ou voila-mon-site.com de meme arrete-un-peu.co.uk ne sera pas trouvé (avec ou sans www. devant)
Je ne veux pas recupérer les http://
Pourriez vous m aider svp pour adapter le regex afin que les liens avec tirets soient aussi extraits?
merci
Partager