Bonjour,
Je dois récupérer le contenu des balises "p", qui contiennent chacun un des 7 paragraphes de mon texte, et séparément le contenu de la balise "recording dates" (h4 et h3) qui contient le titre du texte. "p" et "recording dates" appartiennent toutes les deux à "release-height". Le problème c'est qu'elles sont au même niveau. Donc je ne vois pas comment les prendre séparément. J'aurai voulu faire un :
process '//div[@class="release-height"]/div[@class="recording-dates"]', titre => 'TEXT';
process '//div[@class="release-height"]/p (autant de fois qu'il y en a)', texte =>'TEXT';
Car si je ne mets qu'une fois /p, il ne me récupère le contenu que du premier p, forcément...
Je dois donc faire 2 process, mais je ne sais pas du tout comment procéder.
J'ai écrit ça, mais ça ne fonctionne pas
Merci !
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 #!/usr/bin/perl use URI; use Web::Scraper; use Encode; use Data::Dumper; open (OUT, '>LM_Article.txt'); my $resultat = scraper { process '//body[@id="artists"]', 'entree[]' => scraper { process '//div[@class="header-bar-inner"]/h2', artiste => 'TEXT'; process '//div[@class="release-height"]/div[@class="recording-dates"]', titre => 'TEXT'; }; my $resultat2 = scraper { process '//div[@class="release-height"]', 'entree[]' => scraper { process '//div[@class="release-height"]/p', texte =>'TEXT'; }; } my $res = $resultat.$resultat2 ->scrape( URI->new("http://www.bluenote.com/artists/lee-morgan") ); for my $val (@{$res->{entree}}) { print OUT Encode::encode ("utf8", $val->{artiste} . "\n" . $val->{titre} . "\n" . $val->{texte} . "\n"); } close (OUT);
Partager