Passer au contenu principal

Présentation et formatage des résultats

Formats disponibles pour la sauvegarde des résultats

Pour le formatage des résultats dans A-Parser, on utilise le moteur de gabarit Template Toolkit, ce qui permet de sauvegarder facilement les résultats de la collecte de données dans divers formats :

  • Dans des fichiers texte sous forme de liste : un résultat par ligne, via un séparateur, dans un format arbitraire
  • Dans des fichiers CSV avec possibilité d'importation ultérieure dans Excel, Google Docs, etc.
  • En XML, JSON et autres formats de stockage de données
  • En HTML en générant des pages "à la volée"
  • Sous forme de dumps SQL pour un import direct dans une base de données ou en écrivant directement dans une base de données SQLite
  • En format binaire pour la sauvegarde d'images (jpg, png, gif, ...), de documents (pdf, docx, ...), de fichiers exécutables et d'archives (exe, dmg, zip, ...) et tout autre type de données

Édition du format de résultat

Result format (Format de résultat) - permet de formater les résultats selon l'aspect souhaité en utilisant des gabarits, s'applique à chaque combinaison requête-résultats.

Formats de résultats
  • Le format général du résultat est défini dans le champ Result format
  • Le format de résultat pour chaque scraper peut être défini séparément dans les paramètres du scraper sous Result format

A-Parser prend en charge le travail avec plusieurs scrapers dans une seule tâche ; dans le format général des résultats, il est nécessaire d'indiquer de quel scraper extraire le résultat :

  • $p1 - résultats du premier scraper (SE::GoogleSE::Google sur la capture d'écran), $p2 - résultats du deuxième scraper (SE::BingSE::Bing sur la capture d'écran)
  • Le numéro d'ordre du scraper est affiché à gauche du champ de sélection du scraper
  • $p1.preset et $p2.preset signifient qu'il est nécessaire de prendre la valeur du format de résultat des paramètres des scrapers correspondants
  • Dans cet exemple, $p1.preset peut être remplacé par $p1.serp.format('$link\n') ce qui aura le même effet, alors que le format de résultat des paramètres ne sera plus utilisé

Result format (Le format de résultat) peut être indiqué dans un éditeur multiligne pratique en cliquant sur l'icône correspondante dans le champ d'édition :

Champ d'édition du format de résultat

Dans le format général des résultats, les variables suivantes sont disponibles :

  • $query - la requête après formatage
  • $query.* - toutes les variables relatives à la requête, décrites dans l'article Gabarits dans les requêtes
  • $p1, $p2, ... - variables pour accéder aux résultats de la collecte de données pour chaque scraper séparément (Visualisation des résultats possibles pour chaque scraper)
  • $p1.query, $p2.query, ... - requêtes après formatage en tenant compte du format de requête indiqué dans les paramètres de chaque scraper

Texte de début et de fin

Pour chaque fichier de résultats, un texte de début/fin distinct est spécifié :

  • Pour la formation de l'en-tête d'un fichier CSV
  • Pour les balises de début et de fin d'un fichier XML
  • Pour le header, l'en-tête et le footer des fichiers HTML
  • Pour toute autre variante d'application

Pour activer cette fonctionnalité, il est nécessaire de cliquer sur le bouton More options (Plus d'options) dans la partie inférieure de l'Éditeur de tâches

Champs pour le texte de début et de fin

Dans le texte de début et de fin, l'utilisation du moteur de gabarit Template Toolkit est prise en charge, variables disponibles :

  • $query - la requête après formatage
  • $query.* - toutes les variables relatives à la requête, décrites dans l'article Gabarits dans les requêtes
note

Important ! Ces variables ne sont disponibles que lors de la sauvegarde de chaque requête dans un fichier séparé ou lors de l'utilisation de ces mêmes variables dans le Format du nom du fichier de résultat.

Format du nom du fichier de résultats

A-Parser permet d'utiliser des gabarits également dans les noms des fichiers de sortie, ce qui permet de créer automatiquement des fichiers et des dossiers basés sur la date actuelle, par numéro d'ordre de la requête, par la requête elle-même et dans tout autre format.

Champ Nom du fichier

Dans le champ File name (Nom du fichier), les variables suivantes sont prises en charge :

  • Toutes les variables disponibles pour le Format général du résultat
  • $queriesfile - le chemin et le nom du fichier contenant les requêtes ; si les requêtes sont indiquées via le formulaire, il contiendra queries_from_text.txt
  • $datefile - objet du plugin date du moteur de gabarit Template Toolkit, configuré sur le format de date %b-%d_%H-%M-%S ; lors du formatage, il donne l'heure et la date actuelles sous la forme May-08_20-08-38, le format peut être modifié dans les Paramètres supplémentaires

Par défaut, le nom du fichier est créé selon la date et l'heure au moment du démarrage de la tâche

Exemple complexe

reports/$queriesfile/${query}.txt
  • Un dossier reports sera créé
  • Un sous-dossier avec le nom du fichier de requêtes sera créé
  • Dans le sous-dossier, autant de fichiers que de requêtes utilisées dans la tâche seront créés, la requête elle-même avec l'extension .txt sera utilisée comme nom de fichier
astuce

La variable $query est écrite au format ${query} afin d'empêcher l'interpolation de l'extension .txt comme faisant partie de la variable, plus de détails dans la documentation sur le moteur de gabarit Template Toolkit

⏩ Vidéo. Nommage des fichiers de résultats

Dans cette vidéo, nous présentons quelques exemples de nommage du fichier de résultat :

  1. Numérotation du fichier de résultat conformément aux requêtes.
  2. Numérotation du fichier de résultat + partie du nom de la requête.
  3. Nommage du fichier de résultat selon la requête, si la requête est un lien.

Visualisation des résultats disponibles

Chaque scraper possède son propre ensemble de résultats ; vous pouvez consulter la liste des résultats disponibles en survolant le scraper avec le pointeur, une info-bulle affichera la liste des résultats simples et des tableaux, avec la liste des éléments imbriqués :

Liste des résultats disponibles dans l'info-bulle

En Jaune sont marqués les résultats communs à tous les scrapers :

  • $query - la requête transmise au scraper après formatage
  • $query.orig - la requête originale (telle qu'elle était dans le fichier ou dans le champ de saisie des requêtes)
  • $query.first - la première requête lors de l'utilisation des options de collecte de données imbriquée (Parser tous les résultats / Parse all results ou Parser jusqu'au niveau / Parse to level)
  • $info.success - information sur le succès de la collecte de données pour cette requête
  • $info.retries - nombre de tentatives utilisées pour cette requête
  • $info.stats - statistiques de fonctionnement du scraper pour cette requête
  • $pages.$i.data - tableau contenant les réponses brutes du serveur pour permettre l'extraction autonome d'informations supplémentaires
En vert sont marqués les résultats disponibles uniquement pour le scraper SE::BingSE::Bing :
  • $totalcount - nombre de résultats de la recherche
  • $ads avec les éléments $link, $anchor, $visiblelink, $snippet, $position et $page - tableau avec la liste des annonces
  • $related.$i.key - tableau avec la liste des mots-clés associés
  • $serp avec les éléments $link, $anchor, $snippet, $cache - tableau avec les résultats principaux du moteur de recherche
note

Notez que pour les tableaux, la variable $i est explicitement indiquée, signifiant qu'il y a plusieurs éléments et qu'on peut y accéder par index (numéro de position) ou parcourir chaque élément dans une boucle.

astuce

Le résultat $pages.$i.data sera automatiquement changé en $data pour les scrapers qui ne « naviguent pas par pages » dans le cadre d'une seule requête. Par exemple comme DeepL::TranslatorDeepL::Translator.

Représentation des résultats

A-Parser a été conçu pour la collecte de données de tous types, pour cela 2 types de résultats ont été introduits :

  • Résultats simples (Flat)
  • Tableaux de résultats (Array)

Examinons chaque type sur l'exemple du scraper SE::GoogleSE::Google, capture d'écran des résultats :

Capture d'écran des résultats Google

Résultats simples

Résultats simples - lorsqu'une seule requête correspond à un seul résultat, exemples :

  • Nombre de résultats par requête ($totalcount)
  • Si la requête est une faute de frappe ($misspell, non représenté sur la capture d'écran)

Autres exemples :

  • Valeur du texte traduit ($translated) dans le scraper DeepL::TranslatorDeepL::Translator
  • Nombre de domaines référents ($domains), valeur du trust ($trustflow), backlinks ($backlinks), etc. dans le scraper Rank::MajesticSEORank::MajesticSEO

Les résultats uniques sont sauvegardés dans des variables ordinaires (préfixe $ + nom en caractères latins)

Tableaux de résultats

Tableaux de résultats - lorsqu'une seule requête correspond à une liste de résultats, chaque élément de la liste peut à son tour contenir plusieurs éléments imbriqués. Analysons l'exemple des résultats Google - ils sont représentés dans le scraper par le tableau $serp, pour plus de clarté utilisons un tableau, notons les 5 premiers résultats :

Lien ($link)Ancre ($anchor)Snippet ($snippet)
http://www.speedtest.net/Speedtest.net by Ookla - The Global Broadband Speed TestTest your Internet connection bandwidth to locations around the world with this interactive broadband speed test from Ookla.
http://en.wikipedia.org/wiki/Test_cricketTest cricket - Wikipedia, the free encyclopediaTest cricket is the longest form of the sport of cricket. Test matches are played between national representative teams with "Test status", as determined by the ...
http://www.speakeasy.net/speedtest/Speakeasy Speed TestSaturday 03-May 2014, 11:04:29 AM Your IP: The Speakeasy Speed Test requires Flash v7 or higher. Please update your browser. See Pricing Or Call Today
http://www.humanmetrics.com/cgi-win/jtypes2.aspPersonality test based on C. Jung and I. Briggs Myers type theoryHumanmetrics Jung Typology Test™ instrument uses methodology, questionnaire, scoring and software that are proprietary to Humanmetrics, and shall not be ...
http://test-ipv6.com/Test your IPv6.This will test your browser and connection for IPv6 readiness, as well as show you your current IPV4 and IPv6 address. ... Test your IPv6 connectivity. JavaScript ...

Chaque position des résultats est enregistrée dans un tableau avec 3 éléments imbriqués - lien ($link), ancre ($anchor), snippet ($snippet)

Autre exemple - la liste des mots-clés associés, qui est sauvegardée dans le tableau $related :

Mot-clé ($key)
test wwe
depression test
test my speed
wonderlic test
test personality
act test
jiggle test
bipolar test

Comme on peut le voir, ce tableau ne contient qu'un seul élément imbriqué - le mot-clé ($key)

La numérotation des éléments des tableaux commence à 0, exemple d'accès à des éléments individuels du tableau :

  • $serp.0.link - premier lien des résultats
  • $serp.3.anchor - quatrième ancre des résultats
  • $related.0.key - premier mot-clé associé

Plus de détails sur le formatage des résultats simples et des tableaux seront décrits ci-dessous

Principes de formatage

Une fois que le scraper a collecté les données dans des résultats simples et des tableaux, il est nécessaire de les afficher (sauvegarder dans un fichier) au format souhaité. Pour plus de commodité et de fonctionnalité, A-Parser utilise le moteur de templates Template Toolkit. Examinons les constructions fréquemment utilisées, pour cela nous utiliserons l'outil Test des templates. Choisissons un projet pour le scraper SE::GoogleSE::Google :

Test des gabarits

La capture d'écran présente 3 champs :

  • JSON - représentation interne des données dans le scraper
  • Template - gabarit selon lequel s'effectue le formatage du résultat
  • Result - données directement transformées selon le gabarit indiqué, c'est sous cette forme que le résultat sera écrit dans le fichier

En modifiant le gabarit, nous pouvons changer l'aspect du résultat, considérons le gabarit suivant :

Exemple

Texte dans le champ Template (Gabarit) :

Rapport pour la requête : $query    
Concurrence : $totalcount
Liste des liens, ancres et snippets :
$serp.format('$link $anchor\n$snippet\n\n')

Soulignons les règles de base :

  • Le texte ordinaire est affiché dans le résultat tel quel, sans modifications
  • Pour afficher des résultats simples, il faut insérer la variable contenant le résultat souhaité avec le préfixe $ à l'endroit voulu
  • Pour le formatage des tableaux, on utilise la méthode .format, nous en parlerons un peu plus bas
  • \n correspond au saut de ligne

Formatage des tableaux

Analysons la construction :

$serp.format('$link $anchor\n$snippet\n\n')

Cette écriture signifie que pour le tableau $serp, il faut appeler la méthode .format avec le paramètre '$link $anchor\n$snippet\n\n'. La méthode .format concatène en une chaîne tous les éléments du tableau selon le gabarit indiqué dans le paramètre ; le gabarit lui-même signifie : pour chaque élément du tableau $serp, afficher le lien et l'ancre séparés par un espace, puis afficher le snippet sur une nouvelle ligne, suivi de deux autres sauts de ligne, créant ainsi une ligne vide entre les résultats.

Utilisation du moteur de gabarit

Affichage des variables

Pour utiliser le moteur de gabarit, il faut insérer les balises [% %], et à l'intérieur des balises, saisir la logique à exécuter.

Affichage du CMS avec utilisation du moteur de gabaritRésultat de l'affichage du CMS avec utilisation du moteur de gabarit

Parcours d'un tableau

Pour afficher les éléments d'un tableau, il faut utiliser la construction FOREACH :

[% FOREACH i IN p1.list;    
i.cms _ "\n";
END %]
astuce

Plus d'informations et d'exemples sur le moteur de gabarit dans Particularités du fonctionnement des gabarits dans A-Parser.

Exemples

Affichage de la concurrence

Affichage de la concurrence par requête (nombre de résultats par requête) pour tous les scrapers de moteurs de recherche (SE::GoogleSE::Google, SE::YandexSE::Yandex...).

Format du résultat :

$query: $totalcount\n

Exemple de résultat :

test: 3910000000
viagra: 278000000
fenêtres pvc: 3220000
...

Affichage des liens provenant des résultats des moteurs de recherche.

Format du résultat :

$serp.format('$link\n')

Exemple de résultat :

http://www.speedtest.net/
http://www.speakeasy.net/speedtest/
http://en.wikipedia.org/wiki/Test_cricket
http://www.humanmetrics.com/cgi-win/jtypes2.asp
http://html5test.com/
http://test-ipv6.com/
...

Collecte de suggestions

Affichage des suggestions des moteurs de recherche.

Format du résultat :

$results.format('$suggest\n')

Exemple de résultat :

serveur de test tanks online
tests gia de langue russe
recette pâte à crêpes
testicule
pâte à pizza au lait

Affichage des données sur la requête

Dans Net::HTTPNet::HTTP et les scrapers basés sur celui-ci, l'affichage suivant est également disponible :

  • $proxy - le proxy sur lequel la requête a été exécutée

  • $headers - les en-têtes de la réponse

  • $code - le code de réponse

  • $reason - le statut de la réponse

Exemple

Affichage des valeurs des variables en JSON

Méthode .json pour les objets

Affichage de toutes les redirections d'une requête

Pour cette tâche, la variable $response est disponible, elle permet d'obtenir n'importe quelle variable de requête, y compris toutes les redirections précédentes.

Format du résultat :

$response.Redirects.format('$URI\n--> ')$response.URI

Résultat du fonctionnement du scraper :

Exemple

Affichage en JSON avec utilisation du moteur de gabarit pour l'enregistrement de la date

L'exemple montre l'affichage des résultats du scraper Net::WhoisNet::Whois au format JSON.

Exemple

Le résultat contiendra le domaine vérifié, la date au moment de la vérification et le résultat de la vérification. Comme on peut le voir dans le Format du résultat, on obtient la date à l'aide du moteur de gabarit Template Toolkit.

Format du résultat :

{    
"domain": "$query",
"date": "[% USE d = date(format = '%d.%m.20%y', locale = 'C');d.format() %]",
"expire": "$p1.expire_date",
},

Exemple de résultat :

[{
"domain": "a-parser.com",
"date": "05.05.2021",
"expire": "25.02.2022",
},
{}]
Télécharger l'exemple

Comment importer une présélection dans A-Parser

eJxtVG1v2jAQ/ivWCUQrZaxM2pdM+0BRkTYx6ErRPgQ0efWFeXXszHYYVZT/3nMS
EtruQyTf23P33EtK8Nw9uluLDr2DOCkhr98QwxJ9HP/4baRj79jNkWe5QjaBCHJu
HdrgnZw5kUFgygvlYbeLgFDo6ebGZjyglVvNGNuCMBmXegsxvQd/C7RPW4hONu6x
sSRDtlnfMME+s6C8SGsYkkZDMR5m4w9Xw6dRxJR54FQUqWejy09i3LhdXLLhrkfF
Yy5tizvIJ+NG/tkkI6eKPugKXvMD3hsqOJUKe/WcpCXPkAyDEBmsXbqxP3py5UJI
L43mqmEdOtR3YqMl0aV4bcg3MJfo5tZkfa66HaeOJW17gCCKOvZ7EwNxypXDCByV
OucUKl5bpEfLvbGrPNRD+hKMniq1wAOq3q3Gvy6kEjTOaUpBX9rA/7us3mBUHb3z
VAe0/yzVALG3BYHUwvXqWx8kzMLsibj4RbSVzKQn2c1MocOuXJHyETHvWrYMLcuM
xS5LA9zmpvXNUQtyTPqJTfNWV1Y7eEXkxWBeKh+MTuV+RRSsFHjyLPQ93clKz0y4
gsBMF0rRYBze9Qsyde0ggtC18E3wrE4R2Lf3EoE3Rrmva9KF+7KSFvBjKDCjXp5n
bSFp69XmbnFugbOlqrMnJ/F9c3Ku3tLAkNZ3b2ixiFq16865+weU50cdlxWN64+7
bZwCdK2MgDrkaBYQT6pnHsF5pA==

Vérification de la présence d'un site dans Google News par mot-clé

Exemple de vérification de la présence d'un site dans Google News par mot-clé

Format du résultat :

[% linksToOneString = p1.serp.format('$link. ');
matches = linksToOneString.match('.+?(' _ p1.query.domain _ ').+?');

IF matches.0;
p1.query.orig _';yes' _ "\n";
ELSE;
p1.query.orig _';no' _ "\n";
END %]

Exemple de résultat :

scraper google|a-parser.com;no
scraper google|forbes.ru;yes
Télécharger l'exemple

Comment importer une présélection dans A-Parser

eJylVVFv2jAQ/iuR1YpWo1EQ7UuqaaIMpk6stKV9AoRccqQeju3aCQVR/vvOTkjS
ruNlEoq4u+++O9+dz1uSUrM0txoMpIaE4y1R7j8JyagXhj+kjDl4Z173GeZLL5IJ
ZcLDX2EQ8Go8WNNEcSBNoqg2oC3PuOaOhggWNOMpaW5JulGA7HIFWrPIGlmEsqIx
zGUmEENWlGeIae3+DccwqkIS8WrIATRnYmkUumCQGn9wwCXmNfr7x0Psz3Wozg4m
omtQTkU8O4xXWq43GlLNwNQ8W0EQkN102iTYLKyr6UudUNu08fFEuNM+yKGAETqK
2PvqqZZvK+YvHO6kcWQxvtc4vZwIVMyfwSDqo6PvTCcN/8u3k4Y3sywvGeiNX8zB
DAnQ5lg+CTvzJmSCFuLM132viOQHqCi5pGYIbVxuwDTeufQGo95nQCE/4G6+T8Tx
lJTFGNEVPEgsxoK54dvXCKUbmtj6HUU0BWvdF+TUT9d28mgUsZRJQXleUTvKVZUf
BXvJx00i1maFbelrmaAqBUfgUt13Y0yOnEyQInO+d7kPCReUG2gSg6n2KSYSlZZU
Z2hgKWiaSj1UNh1Ub4kUHc4HsAJe+Tv6q4zxCK9dZ4FO14Xj55DhXxy78nT1UDiG
rxpzKFmcdDX8VXlFciBjPHj0hMfmLGEpyqbrrnBIAlQuAVRZshtbskRqKMMUzEV0
XEEKhJ35qmMdVaneHcMtKiMzPbfUeY2b+ztk3PSNFGe2IQZwKeUFIW8WJG1f9i75
IJPprmpyLQYq51IsWDwsruV+HDLxgGtzKLrSLj5bJpFxjk02cF8NW8cUTbVCdd6P
zl0XwlZyvyQxScnNz1F+cqUZ5nxhE0ywMfWoBeWccv54P6hbSDWgKEyy4Ly9cN/A
fs/zb8tpLnKN54S2E9rV//bTGz3L97o/lwneuf/iwvv2hBsAt55NO4VYYh9sN939
CUkvf0vssoO1oiKCKL8SO9ej4oEp36tt/ZkJtzucy9/mNgfZqlsI6rB9BofOPil/
AGn6WSM=

Affichage de la valeur timestamp au format date

Il arrive parfois que les résultats ne contiennent pas de date classique, mais une valeur timestamp comme dans le scraper Social::Instagram::TagSocial::Instagram::Tag. Cette valeur peut être représentée au format date en utilisant le moteur de templates Template-Toolkit.

Exemple d'affichage d'une valeur timestamp au format date

Format du résultat :

[% USE date;

query.orig _ ": total posts - " _ postscount _ "\nPosts:\n";

FOREACH i IN posts;
d = date.format(i.time, format => '%d.%m.20%y');
i.link _ " - " _ d _ ":\n";
i.text _ "\n";
END %]

Exemple de résultat :

sport: total posts - 96500663
Posts:
https://www.instagram.com/p/COfJHshAkeD/ - 05.05.2021:
Quelques exemples de notre nouvelle campagne de communication personnalisable avec le nom des clubs 😀

Vous préférez quel visuel : 1, 2, 3, 4, 5 ? 🤔

#clubnormand #tennis #padel #beachtennis #tenniscourt #padelcourt #beachtenniscourt #lnt #LigueNormandieTennis #🎾 #sport #normandie #normandietourisme
https://www.instagram.com/p/COfJG7olavg/ - 05.05.2021:
💥 Sau màn lật đổ “Bà già” thành công, Nửa xanh thành Milan chính thức vượt qua Nửa đỏ về số lần lên đỉnh nước Ý nhiều nhất lịch sử.
-----------------------------
➖ Website: https://webthethao247.com/
➖ https://g.page/webthethao247?share
#wtt247 #webthethao247 #thethao #sport #bongda #SerieA #InterMilan #Juventus #ACMilan
https://www.instagram.com/p/COfJG1Hg7ax/ - 05.05.2021:
Which Skill was better 1 or 2? 🤔👇
Follow @ftb4ll for more 💥
Follow @ftb4ll for more 💥
Follow @ftb4ll for more 💥
________________________________________
Leave a Like 👍🏽
Subscribe for more 🔔
Leave your thoughts in the Comments  💬
________________________________________
❌Ignore the Tags ❌
#football #soccer #fussball #futbol #fifa #championsleague #bundesliga #ucl #footballmemes #goal #transfer #sports #penalty #ultimateteam #pacybits #fut #ultras #laliga #freekick #referee #sport #calcio #messi #ronaldo #skills #premierleague #foul #footballseason
https://www.instagram.com/p/COfIlXqhfAa/ - 05.05.2021:
Be Fuckin’ Ready 🤣🤣🤣

Get ready to fly!!!! 🏐🏐🏐🏐

Follow - @crackonkings

#beachball #nalin&kane #trance #music #90s #onyerhead #festival #party #afterparty #love #summer #uk #happy #sesh #crackon #football #sport #festivaloutfit #festivalfashion #sun #dj #dancing #club #festivalgirl #house #techno #rave
...
Télécharger l'exemple

Comment importer une présélection dans A-Parser

eJx1VNtuGjEQ/RXLCkoj0VVSqS9bpRKhoFJRNuXyxKLKxQa58dqO7aVBiH/vjPeW
pM0+7RzPzDlzsU80MP/g753wIniark/Uxn+a0oXZSqbSdKJ9YHvHijRdsj15T5ay
EAAVlgRDOAuCiCewlKB9apnzwmGm9RsJwImLHStVoP0TDUcrgMschHOSYwbJwd4Z
V7AASqIbPTBVotu6R1aLUeT8lOtcP5bCHRPj5J78JDlNQVBgiljjgwehOQU4GltT
6hB98lzfI5LCT05jlnE2Hw2GX4kkk1nljnDg5DYyJZWYdzIJUHifVCa5/Uwuezzp
FcmH697x8gpiCHwyUVI/RKpGAa/ENYSVVxBPraAIj2ZfSG9Dz5tNn1aF+3Fkgrov
7E1Sz6U9XLCDWBrslYydb2LAmrECu3WB6vG0qeAqCU+YgXEugzSaqYoBx9WxrrR8
jN3WBnyxxVL4sTMFQKi6Bo+NujW9iDaFFGWM/VHF0HTHlBd96kHqmIEQ/vpEBuFY
MC6zqAfwEzV6oNRUHITq3GL+u1IqDrs12EHQpA78v0v2T45zW95zKti6Pw40tFmi
dZd976K4mZo9VM5/Qd1KFjKA7Ye4T4BeA/gghG17NsOeFcaJlqbOXLPDTbNC44p3
IxvYDnpRxouxvAS3Ru/kPquvTeNZ6iVc50wPDV5HrEuXSsFYvJh36zHw9RjQ6AS+
Dh5GCiy9ua40GKP8t0Ul1ToJ6/cRBRbQyeesdcotU2o1nz4/wUAfjM30yLlX44uL
Qb01Drm2sLx7A2sFpZ037cvSPlWnt96X9HSGuf3291UAFonugEG3PAyFpjfnvwdy
t1Y=

Autres exemples

Exemples de gabarits fréquemment utilisés