Créer une boucle de capture de liens
crazycricriangel
-
Utilisateur anonyme -
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
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:
- Créer une boucle de capture de liens
- Créer un lien pour partager des photos - Guide
- Capture d'écran whatsapp - Accueil - Messagerie instantanée
- Comment créer un groupe whatsapp - Guide
- Créer un compte google - Guide
- Capture d'écran samsung - Guide
4 réponses
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)
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)
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();
}
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();
}
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 :)
Sinon tu sais pourquoi ma boucle ne marche q'une seule fois?
merci :)
http://support.evecommunity.com/eve/forums/a/tpc/f/9923013313/m/4743053313
http://www.graphiks.net/cours/perl/54-connexion-mysql-en-perl.html
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
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)