Extraire variable page html
Résolu/Fermé
perlzero
-
Modifié le 14 avril 2017 à 20:35
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 18 avril 2017 à 09:25
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 18 avril 2017 à 09:25
A voir également:
- Extraire variable page html
- Supprimer une page word - Guide
- Extraire video youtube - Guide
- Extraire son video - Guide
- Page d'accueil iphone - Guide
- Traduire une page web - Guide
2 réponses
[Dal]
Messages postés
6174
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
2 février 2024
1 083
Modifié le 15 avril 2017 à 01:32
Modifié le 15 avril 2017 à 01:32
Oui, tu récupères les données JSON en les matchant avec une regexp, et tu utilises un module CPAN pour les décoder et les passer à Perl. Par exemple comme ceci avec JSON::Parse :
donne :
La regexp suppose que le JSON est sur une seule ligne à la suite de "var utilisateurs = "
Pour plus de détails : https://metacpan.org/pod/release/BKB/JSON-Parse-0.49/lib/JSON/Parse.pod
Dal
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; use JSON::Parse 'parse_json'; my $listuser = <<'EOT'; <table id="table" class="tablestyle"> <script type="text/javascript"> // <!-- var utilisateurs = { "firstName": "John", "lastName": "Smith", "age": 25, "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": "10021" }, "phoneNumber": [ { "type": "home", "number": "212 555-1234" }, { "type": "fax", "number": "646 555-4567" } ] } ... EOT if ($listuser =~ /var utilisateurs = (.*?)$/ms) { print "matched $1\n"; my $parsed = parse_json($1); print Dumper($parsed); }
donne :
$ ./perlzero.pl
matched { "firstName": "John", "lastName": "Smith", "age": 25, "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": "10021" }, "phoneNumber": [ { "type": "home", "number": "212 555-1234" }, { "type": "fax", "number": "646 555-4567" } ] }
$VAR1 = {
'age' => 25,
'address' => {
'postalCode' => '10021',
'state' => 'NY',
'city' => 'New York',
'streetAddress' => '21 2nd Street'
},
'firstName' => 'John',
'lastName' => 'Smith',
'phoneNumber' => [
{
'number' => '212 555-1234',
'type' => 'home'
},
{
'type' => 'fax',
'number' => '646 555-4567'
}
]
};
La regexp suppose que le JSON est sur une seule ligne à la suite de "var utilisateurs = "
Pour plus de détails : https://metacpan.org/pod/release/BKB/JSON-Parse-0.49/lib/JSON/Parse.pod
Dal
Merci Dal,
mon problème est résolu en grande partie avec l'aide que tu as fournie. Effectivement mon json était multiligne, mais avec quelques recherches supplémentaires, j'ai pu m'en sortir.
@bientôt
mon problème est résolu en grande partie avec l'aide que tu as fournie. Effectivement mon json était multiligne, mais avec quelques recherches supplémentaires, j'ai pu m'en sortir.
@bientôt
[Dal]
Messages postés
6174
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
2 février 2024
1 083
18 avril 2017 à 09:25
18 avril 2017 à 09:25
super, bravo !