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

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);
Merci !