Extraire variable page html
Résolu
perlzero
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
j'ai besoin d'aide sur un script qui permet d'aller interroger une page html avec ceci :
dans cette page html est écrit en dur une variable au format json :
Y'a-t'il un moyen d'extraire cette variable et de la passer à perl ?
Merci pour votre aide
j'ai besoin d'aide sur un script qui permet d'aller interroger une page html avec ceci :
$listuser=`curl -s -b cookie.txt $url`;
dans cette page html est écrit en dur une variable au format json :
var utilisateurs = {...[{...},{...}]}
<table id="table" class="tablestyle"> <script type="text/javascript"> // <!-- var utilisateurs = {...[{...},{...}]} ...
Y'a-t'il un moyen d'extraire cette variable et de la passer à perl ?
Merci pour votre aide
A voir également:
- Extraire variable page html
- Extraire une video youtube - Guide
- Supprimer page word - Guide
- Extraire le son d'une vidéo - Guide
- Editeur html - Télécharger - HTML
- Extraire image pdf - Guide
2 réponses
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