Formatage des requêtes
Query format (Format de la requête) - permet d'ajouter des substitutions et de formater la requête selon le format souhaité à l'aide de gabarits, s'applique à chaque requête.
Formats de requêtes

- Format de requête pour le 1er scraper
- Format de requête pour le 2ème scraper
- Format de requête général
Il existe 2 façons de spécifier un gabarit :
- Format de requête général, il est traité en premier et prend en charge les substitutions
- Format de requête pour chaque scraper - permet de définir un format spécifique pour des scrapers individuels
Analysons l'exemple sur la capture d'écran, supposons que nous utilisions comme requêtes un fichier avec une liste de domaines de ce type :
google.com
a-parser.com
yandex.ru
Le format de requête général est défini comme suit :
http://$query
Avant chaque requête initiale (domaine), la chaîne http:// sera ajoutée, la requête sera transformée google.com -> http://google.com
Le format de requête pour le 1er scraper est resté inchangé, il va scraper la requête http://google.com
Le format de requête pour le 2ème scraper ressemble à ceci :
site:$query
La requête pour ce scraper sera transformée : http://google.com -> site:http://google.com
Gabarits dans les requêtes
Dans le format de requête, le moteur de gabarits Template Toolkit est entièrement pris en charge, les variables disponibles sont :
$query- la requête après formatage via le format de résultat général$query.num- numéro d'ordre de la requête$query.lvl- niveau d'imbrication de la requête lors de l'utilisation des options Parser jusqu'au niveau / Parse to level ou Parser tous les résultats / Parse all results$query.orig- requête initiale avant formatage$query.first- première requête lors de l'utilisation des options Parser jusqu'au niveau / Parse to level ou Parser tous les résultats / Parse all results$query.prev- affiche la requête qui était au niveau précédent, fonctionne pour
HTML::LinkExtractor, $tools.query.add et les scrapers JS this.query.add- Toutes les variables créées via le Constructeur de requêtes
Macros de substitution
Le Format de requête général prend en charge les macros suivantes :
| Macro | Description | Exemples |
|---|---|---|
| {az:START:END} | Substitution d'une séquence alphanumérique. À la place de START, indiquez le début de la séquence, à la place de END, la fin. La longueur de END doit être supérieure ou égale à celle de START. Les caractères à la fin de la séquence END doivent se trouver après (par ordre alphabétique) les caractères au début de la séquence START. Toutes les séquences de caractères UTF-8 peuvent être utilisées. | {az:a:z} - substitution de tous les caractères de a à z (a, b, c, ..., x, z). {az:aaa:zzz} - substitution de tous les caractères de aaa à zzz (aaa, aab, aac, ..., zzx, zzz). {az:a:zz} - substitution de tous les caractères de a à zz (a, b, c, ... aa, ab, ..., zx, zz). {az:00:99} - substitution de tous les nombres de 00 à 99 (00, 01, 02, ..., 98, 99). {az:а:яяя} - substitution de tous les caractères cyrilliques de а à яяя (а, б, ... аа, аб, ... яяю, яяя) |
| {each:WORD1,WORD2,...} | Substitution des mots spécifiés WORD1, WORD2, etc., longueur illimitée | {each:green,blue,red,black} - substitution des mots green, blue, red, black. {each:,buy,sell} - substitution d'un mot vide, puis buy et sell |
| {subs:NAME} | Substitution de mots supplémentaires à partir de fichiers dans le dossier queries/subs/. À la place de NAME, il faut indiquer le nom du fichier, sans l'extension .txt | {subs:zones} - substitution de toutes les lignes du fichier queries/subs/zones.txt |
| {num:START:END} | La macro parcourt les nombres dans la plage spécifiée. À la place de START, indiquez le début de l'intervalle, à la place de END, la fin. Les nombres décimaux sont pris en charge. | {num:1:1000} - substitution de tous les nombres de 1 à 1000 (1, 2, 3 ..., 999, 1000) |
| {num:START:END:STEP} | La macro parcourt les nombres dans la plage spécifiée, avec un pas défini. À la place de START, indiquez le début de l'intervalle, à la place de END, la fin, à la place de STEP, le pas. Les nombres décimaux sont pris en charge. | {num:0:1000:10} - substitution de tous les nombres de 0 à 1000 avec un pas de 10 (0, 10, 20 ..., 990, 1000) |
| {num:END:START} | La macro parcourt les nombres dans la plage spécifiée dans l'ordre inverse. À la place de END, indiquez la fin de l'intervalle, START indique le début de l'intervalle. Les nombres décimaux sont pris en charge. | {num:1000:1} - substitution de tous les nombres de 1000 à 1 (1000, 999, 998, ..., 2, 1) |
| {num:END:START:STEP} | La macro parcourt les nombres dans la plage spécifiée dans l'ordre inverse, avec un pas défini. À la place de END, indiquez la fin de l'intervalle, START indique le début de l'intervalle, à la place de STEP, le pas. Les nombres décimaux sont pris en charge. | {num:1000:1:10} - substitution de tous les nombres de 1000 à 1 avec un pas de 10 (1000, 990, 980, ..., 10, 1) |
⏩ Vidéo : Macros de substitution
Dans cette vidéo sont examinés :
- macro
{num}sur des exemples de navigation par pages et de parcours de coordonnées dans le scraper
Maps::Google - la macro
{az}sur l'exemple du scraping avec inurl: pour augmenter le nombre de requêtes et par conséquent de résultats - la macro
{each}sur l'exemple du scraping de suggestions pour la génération de combinaisons de mots
Combinaison de macros de substitution
Les macros de substitution peuvent être combinées. Exemple complexe :
$query site:{subs:zones} {az:aa:zz}
Supposons qu'une des requêtes à scraper soit viagra, et que dans le fichier queries/subs/zones.txt se trouve la liste de zones suivante : com, net, org, alors l'ensemble de combinaisons suivant sera envoyé au scraping :
viagra site:com ab
...
viagra site:net jj
...
viagra site:eek.rg zz
Le nombre total de requêtes correspondra à la multiplication des combinaisons possibles :
1 requête (viagra) x 3 zones ({subs:zones}) x 676 variations de caractères ({az:aa:zz}) = 2028 requêtes