Créer une boucle de capture de liens

crazycricriangel -  
 Utilisateur anonyme -
Bonjour,

Je suis nouvelle sur le forum et je débute en programmation.

Je dois créer un programme via PERL et Mysql qui permet d'aspirer les données d'un site et les stocker dans ma base de donnée Mysql.

De ce fait, j'aimerais créer une boucle qui me permettrai de capturer les liens dont j'ai besoin.
les liens que je désire aspirer sont de type:

http://members.calbar.ca.gov/fal/Licensee/Detail/179600

J'aimerai capturer tout les liens du 30237 au 25610 en sachant que l'adresse ne bouge pas, seul le numéro change.

ça fait 3 jours que je bloque ,s'il vous plait aidez moi :)

merci beaucoup
A voir également:

4 réponses

bob
 
1.Tu boucles sur ton intervalle de liens
2.Appel de la fonction wget (http://support.evecommunity.com/eve/forums/a/tpc/f/9923013313/m/4743053313)
3.Insertion de chaque résultat dans la BDD (http://support.evecommunity.com/eve/forums/a/tpc/f/9923013313/m/4743053313)
0
bob
 
Je remets les liens, ils sont mal passés :

http://support.evecommunity.com/eve/forums/a/tpc/f/9923013313/m/4743053313

http://www.graphiks.net/cours/perl/54-connexion-mysql-en-perl.html
0
crazycricriangel > bob
 
Merci pour ta réponse rapide!

Mais je débute vraiment en programmation, je m'y suis mise il y a 1 semaine.
et je ne vois pas du tout comment je peux boucler sur mon lien.

Merci
0
bob > crazycricriangel
 
0
crazycricriangel > bob
 
Désolé de te poser des question de débutant :)

Mais j'ai essayé des centaines de boucles du types

$doc=~ 'http://members.calbar.ca.gov/search/member_detail.aspx?x=';

for( $_=30237; $_<256311; $_++) {
$url= $doc,$_++;
}

wget-> $url

ou avec while et foreach... mais je n'arrive pas du tout à mes fins.

c'est la frustation...lool

pourrais-tu me mettre sur la voie stp?

merci beaucoup

(et encore désolépour ces questions de débutant)
0
bob > crazycricriangel
 
Exactement le même problème et la solution ici : https://board.issociate.de/thread/134736/
0
crazycricriangel
 
mon code ressemble à ça...
mais ca ne marche qu'une seule fois...alors que j'aimerai quela boucle tourne.

merci pour ta reponse rapide ;) (encore une fois)

#!/usr/bin/perl -w
use LWP::UserAgent;
use DBI;
use CGI;

for( $a= 256320; $a> 256300; $a--) {

my ( $statut, $name, $bar_number, $address, $phone_number, $fax_number, $email, $undergraduate_school, $county);

$url= "http://members.calbar.ca.gov/fal/LicenseeSearch/QuickSearch?ResultType=0&SearchType=0&SoundsLike=False$a";

my $browser = LWP::UserAgent->new();
$browser->agent("Safari Browser");

$webdoc = $browser->request(HTTP::Request->new(GET => $url));
if($webdoc->is_success){
$content = $webdoc->content();
}
#print $content;
@document = split(/\n/,$content);

foreach $content (@document) {
next if ($content =~ /deceased/i );
next if ($content =~ /not found/i );
}

$count = @document;

for($a=0; $a <$count;$a++) {
$statut = $document[$a+1],if($document[$a]=~ /Current Status:/);
$name = $document[$a],if($document[$a]=~/State Bar of CA ::/);
$bar_number = $document[$a+1],if($document[$a]=~/Bar Number/);
$address = $document[$a+1],if($document[$a]=~/Address/);
$phone_number = $document[$a+1],if($document[$a]=~/Phone Number/);
$fax_number = $document[$a+1],if($document[$a]=~/Fax Number/);
$email = $document[$a+1], if($document[$a]=~ /e-mail/);
$undergraduate_school= $document[$a+1],if($document[$a]=~ /Undergraduate School/);
$county= $document[$a+1],if($document[$a]=~ /County/);
}

$name =~s/State Bar of CA ::/\ /i;
$bar_number =~s/<td colspan="3" class="value">/\ /i;
$bar_number =~s/<\/td>/\ /i;
$address =~s/<td class="value" rowspan="3">/\ /i;
$address =~s/<br \/>/\n/gi;
$address =~s/<\/td>/\ /i;
$phone_number =~s/<td class="value">/\ /i;
$phone_number =~s/<\/td>/\ /i;
$fax_number =~s/<td class="value">/\ /i;
$fax_number =~s/<\/td>/\ /i;
$email=~s/<td class="value">/\ /i;
$email=~s/<\/td>/\ /i;
$email=~s/ /\ /i;
$undergraduate_school =~s/<td class="value">/\ /i;
$undergraduate_school =~s/<\/td>/\ /i;
$county=~s/<td class="value">/\ /i;
$county=~s/<\/td>/\ /i;

#print"\nCurrent Statut:", $statut;
#print "\nName:",$name;
#print "\nBar Number:", $bar_number;
#print "\nAddress:", $address ;
#print "\nPhone Number:", $phone_number;
#print "\nFax Number:", $fax_number;
#print "\nEmail:", $email;
#print "\nUndergraduate School:", $undergraduate_school;
#print "\nCounty:", $county;

my $db = DBI -> connect (("dbi:mysql:dbname=calbar;host=localhost;","root","")) or die "connection impossible!";

$db-> do("insert into attorney values('', '$statut', '$name', '$bar_number', '$address', '$phone_number', '$fax_number', '$email', '$undergraduate_school', '$county')");

$db -> disconnect();
}
0
Utilisateur anonyme
 
Pourquoi tu fais une boucle dégressive ? Essaie avec une version progressive ou un while si ça marche pas.
https://www.commentcamarche.net/contents/776-perl-les-structures-conditionnelles
0
crazycricriangel
 
j'utilise une boucle regressive car je dois recuperer environ 150 000 lignes sur ma base de donnée et que je veux recuperer en priorité les plus recents ( dans le code test j'essaie juste d'en recupere 20 pour voir si le code marche) .

Sinon tu sais pourquoi ma boucle ne marche q'une seule fois?

merci :)
0
Utilisateur anonyme
 
Aucune idée, mais t'as essayé avec les autres méthodes ?
0
crazycricriangel
 
heu... y'a d'autre moyens?

c'est à dire que c'est déjà un miracle que ça marche plus ou moins...
je me demande si je dois faire appel à des fonctions subroutines, ( je sais pas comment ça marche malgré que j'ai passé la journée à lire des tutoriaux dessus...)loool
0
Utilisateur anonyme
 
heu... y'a d'autre moyens?

Ben ce que j'ai cité y'a deux posts de ça...
0