Passer au contenu principal

Particularités du fonctionnement des gabarits dans A-Parser

Test des gabarits

Pour le débogage et le test des gabarits dans A-Parser, il existe un outil spécial : Test des gabarits

Méthode .format pour les tableaux

Dans A-Parser, la plupart des résultats sont présentés sous forme de tableaux avec des éléments imbriqués. En termes techniques, les résultats sont présentés sous forme d'un tableau de hachages, où chaque hachage possède des clés fixes. Analysons cela avec l'exemple du scraper SE::GoogleSE::Google : il contient dans ses résultats un tableau $serp avec les éléments $link, $anchor et $snippet (entre autres) :

"serp" : [
{
"link" : "http://www.speedtest.net/",
"anchor" : "Speedtest.net by Ookla - The Global Broadband Speed <b>Test</b>",
"snippet" : "<b>Test</b> your Internet connection bandwidth to locations around the world with this <br>interactive broadband speed <b>test</b> from Ookla."
},
{
"link" : "http://www.speakeasy.net/speedtest/",
"anchor" : "Speakeasy Speed <b>Test</b>",
"snippet" : "Speakeasy Speed <b>Test</b> - Broadband Speed <b>Test</b>. Go to MegaPath Speed <b>Test</b> ... <br>02:38:36 PM Your IP: The Speakeasy Speed <b>Test</b> requires Flash v7 or higher."
},
{
"link" : "http://en.wikipedia.org/wiki/Test_cricket",
"anchor" : "<b>Test</b> cricket - Wikipedia, the free encyclopedia",
"snippet" : "<b>Test</b> cricket is the longest form of the sport of cricket. <b>Test</b> matches are played <br>between national representative teams with &quot;<b>Test</b> status&quot;, as determined by the&nbsp;..."
}
]

Pour parcourir et afficher facilement les données d'un tel tableau, la méthode .format a été créée. Elle permet de joindre tous les éléments du tableau selon un format spécifique, par exemple tous les liens séparés par un saut de ligne :

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

Ce qui aura pour résultat de sauvegarder chaque lien sur une nouvelle ligne :

http://www.speedtest.net/
http://www.speakeasy.net/speedtest/
http://en.wikipedia.org/wiki/Test_cricket

Affichage des snippets :

$serp.format('$snippet\n')
<b>Test</b> your Internet connection bandwidth to locations around the world with this <br>interactive broadband speed <b>test</b> from Ookla.
Speakeasy Speed <b>Test</b> - Broadband Speed <b>Test</b>. Go to MegaPath Speed <b>Test</b> ...<br>02:38:36 PM Your IP: The Speakeasy Speed <b>Test</b> requires Flash v7 or higher.
<b>Test</b> cricket is the longest form of the sport of cricket. <b>Test</b> matches are played <br>between national representative teams with &quot;<b>Test</b> status&quot;, as determined by the&nbsp;...

Liens, ancres et snippets simultanément :

$serp.format('Link: $link, Anchor: $anchor, Snippet: $snippet\n')
Link: http://www.speedtest.net/, Anchor: Speedtest.net by Ookla - The Global Broadband Speed <b>Test</b>, Snippet: <b>Test</b> your Internet connection bandwidth to locations around the world with this <br>interactive broadband speed <b>test</b> from Ookla.Link: http://www.speedtest.net/, Anchor: Speedtest.net by Ookla - The Global Broadband Speed <b>Test</b>, Snippet: <b>Test</b> your Internet connection bandwidth to locations around the world with this <br>interactive broadband speed <b>test</b> from Ookla.
Link: http://www.speakeasy.net/speedtest/, Anchor: Speakeasy Speed <b>Test</b>, Snippet: Speakeasy Speed <b>Test</b> - Broadband Speed <b>Test</b>. Go to MegaPath Speed <b>Test</b> ... <br>02:38:36 PM Your IP: The Speakeasy Speed <b>Test</b> requires Flash v7 or higher.Link: http://www.speakeasy.net/speedtest/, Anchor: Speakeasy Speed <b>Test</b>, Snippet: Speakeasy Speed <b>Test</b> - Broadband Speed <b>Test</b>. Go to MegaPath Speed <b>Test</b> ... <br>02:38:36 PM Your IP: The Speakeasy Speed <b>Test</b> requires Flash v7 or higher.
Link: http://en.wikipedia.org/wiki/Test_cricket, Anchor: <b>Test</b> cricket - Wikipedia, the free encyclopedia, Snippet: <b>Test</b> cricket is the longest form of the sport of cricket. <b>Test</b> matches are played <br>between national representative teams with &quot;<b>Test</b> status&quot;, as determined by the&nbsp;...Link: http://en.wikipedia.org/wiki/Test_cricket, Anchor: <b>Test</b> cricket - Wikipedia, the free encyclopedia, Snippet: <b>Test</b> cricket is the longest form of the sport of cricket. <b>Test</b> matches are played <br>between national representative teams with &quot;<b>Test</b> status&quot;, as determined by the&nbsp;...

Dans le format, il est également possible d'utiliser la requête initiale (ou d'autres variables disponibles), ce qui permet de définir une correspondance entre la requête et chaque élément du tableau :

$serp.format('$query: $link\n')
test: http://www.speedtest.net/
test: http://www.speakeasy.net/speedtest/
test: http://en.wikipedia.org/wiki/Test_cricket

Méthode .json pour les objets

Comme on le sait, toutes les données dans A-Parser sont représentées sous forme de variables. Il existe une méthode de sérialisation (conversion vers le type String) de ces données au format JSON : .json. Par exemple :

$results.json
Exemple

Drapeau de gabarit statique dans le Nom du fichier de résultat

Le drapeau isStaticTemplate() permet de rendre un gabarit dynamique dans le Nom du fichier de résultat statique. Principe de fonctionnement : lors de l'utilisation de ce drapeau dans le Nom du fichier de résultat, le gabarit s'exécutera une seule fois au démarrage de la tâche et sera ainsi considéré comme statique. Cela permet de nommer les fichiers de manière plus flexible tout en conservant la possibilité d'obtenir des liens vers ceux-ci via la méthode API getTaskResultsFile.

Exemple d'utilisation :

[% isStaticTemplate(); tools.js.eval('Date.now()') %]

Variables disponibles

Lors du formatage des requêtes

Lors du formatage des résultats

Lors de la formation du nom du fichier de résultats

Lors du filtrage des résultats

Interpolation des variables

Par défaut, les gabarits sont inscrits entre les balises [% et %], tout ce qui se trouve en dehors des balises est du texte ordinaire qui sera transmis tel quel dans le résultat. Dans A-Parser, l'interpolation des variables est activée en complément, ce qui permet d'accéder aux variables dans le texte via le symbole $. En plus de cela, \n est également interpolé comme un saut de ligne explicite.

Exemple :

Total des résultats pour la requête $query: $totalcount\n

À la place de $query et $totalcount, les valeurs des variables correspondantes seront insérées, et \n sera remplacé par un saut de ligne. Écriture équivalente sans utiliser l'interpolation :

Total des résultats pour la requête [% query %]: [% totalcount; "\n" %]
note

Veuillez noter que dans les gabarits Template Toolkit, les variables s'écrivent sans le préfixe $.

Cas d'utilisation des gabarits

Formatage des requêtes

Exemple

Dans cet exemple, l'opérateur de recherche site: sera ajouté à chaque domaine du fichier Alexa top500.txt et des substitutions du fichier words.txt seront ajoutées après un espace.

Formatage des résultats

Gabarit dans le format de résultat

Dans cet exemple, la requête, le nombre de résultats dans la page de résultats et le nombre de mots-clés associés seront affichés. De même, la liste des ancres collectées sera affichée.

Gabarits lors du filtrage des résultats

Gabarit lors du filtrage des résultats

Pour pouvoir définir un gabarit, il faut sélectionner Custom Template dans la liste déroulante.
Dans cet exemple, seules les requêtes pour lesquelles moins de 5 résultats ont été collectés seront affichées comme résultat.

Gabarits lors de l'utilisation de l'option Utiliser une regex

Gabarit lors de l'utilisation d'une regex

Dans cet exemple, le scraper collectera les phrases qui contiennent le mot transmis comme second argument de la requête. L'algorithme de fonctionnement est le suivant : la requête est divisée par le Constructeur de requêtes selon le séparateur indiqué en un lien et un mot ; le scraper se rend sur le lien, extrait le texte ; le mot de la requête est inséré dans l'expression régulière et les phrases sont collectées par celle-ci.

Télécharger l'exemple

Comment importer un exemple dans A-Parser

eJyNVE1T2zAQ/StUEwYo1EkoDK0vncA003YCoSScHLejxmtXjWwZSYZkQv57d2XH
diiHXmTp6b3d1X54zSw3C3OrwYA1zA/WLHd75rMIYl5Iy05YzrUBTdcB+zK9Hvn+
FJb289JqPrdKI6Pmrpld5YDqeWGsSu/AlCZ0ufEDZlFqEKEvC+kmgSUKDoNZ0Tvr
997R5zQOgx/em0+zWTab6fA42N97KECvvAWs9vZ37t4GuA+Pj1hlalr6F0nttUK4
1nyFoPve8JQwY7XIElNT6Y0VyMJNGNb4UOmUU1Y6ed+rVF7swMODTglgQAdHjakJ
f4SpQkksJDTwEE+V907ELdDt1tKRZ5eULR5FwgqVcVn6pbCaWO4zgclAfaaQS3kR
YIZapQi5rJbgahtzwDruTNkunPZ7qWF+zKWBE2Yw1CHHQKKXN8KC5ljjcU7xIL5m
KhtIOYJHkA3N2b8shIywTwYxir5Wwtcp439sbOrntV09gn7SGENtxZ0ux9eNKlIj
lWyTIUUqLJ7NlSoyKlcPwQVAXufshmip0lC7qSxX3nEUcsgiZDYlG+QNtPMMNzBG
FXpOpsskn2wnoGyKSS4FVcQATlGZEPZMJEWF2Uqwranfao8tBwjOVRaLZIzJ0CKC
bTMU2RRnd5xdqTSXQDnKCimxxAbumlYbmKqkdGge+1J85VzsTL1VSppvk/LZuRYY
8DkFmGJV2l4rk3Mu5f3dqH3DmvbEw29rc+N3u7rwnsRC5BAJ7imddOnUdVPfp/X9
B7dGtJ6dun3PrdwhLc7Zhduft3DesvDxZ0sctfa/WqSL5/8hMXqfhURhtTD7VKnq
p1j/Otev/hr99QZ79I+5LdlUBOIihtU02IDM72/+Ar1q4iA=

Gabarits dans les paramètres des scrapers

Exemple de substitution d'un user-agent aléatoire

Configuration des macros prédéfinies

Dans A-Parser, il est possible de configurer des macros de gabarits et des variables prédéfinies qui seront disponibles globalement pour tous les gabarits. Vous pouvez spécifier les macros globales dans Settings (Paramètres) -> Additional settings (Paramètres supplémentaires).

Par défaut, on y trouve déjà la prédéfinition de l'objet $datefile, qui est utilisé pour le formatage de l'heure pour le nom du fichier de résultat.

Ajout et utilisation d'une macro

Cet exemple montre l'installation d'une variable globale. Cela peut être utile, par exemple, s'il est nécessaire d'utiliser les mêmes cookies dans plusieurs scrapers Instagram.

Exemple d'installation :

Gabarit
avertissement

Notez la syntaxique de la balise de fermeture du gabarit -%]. Cela est nécessaire pour supprimer le saut de ligne, sinon une ligne vide sera ajoutée au début lors de l'utilisation de n'importe quel gabarit.

Exemple d'utilisation :

Gabarit