Passer au contenu principal

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

Exemple de formats de requêtes
  1. Format de requête pour le 1er scraper
  2. Format de requête pour le 2ème scraper
  3. 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 :

Macros de substitution

Le Format de requête général prend en charge les macros suivantes :

MacroDescriptionExemples
{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::GoogleMaps::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