Vai al contenuto principale

Formattazione delle query

Query format (Formato della query) - consente di aggiungere sostituzioni e formattare la query nel modo desiderato utilizzando i modelli, viene applicato a ogni query.

Formati delle query

Esempio di formati delle query
  1. Formato della query per il 1° scraper
  2. Formato della query per il 2° scraper
  3. Formato comune delle query

Esistono 2 modi per specificare un modello:

  • Formato comune delle query, viene elaborato per primo e supporta le sostituzioni
  • Formato della query per ogni scraper - consente di impostare un formato specifico per singoli scraper

Analizziamo l'esempio nello screenshot, supponiamo di utilizzare come query un file con un elenco di domini di questo tipo:

google.com  
a-parser.com
yandex.ru

Il formato comune della query è impostato come:

http://$query

Prima di ogni query originale (dominio) verrà anteposta la stringa http://, la query verrà trasformata da google.com -> http://google.com

Il formato della query per il 1° scraper è rimasto invariato, eseguirà lo scraping della query http://google.com

Il formato della query per il 2° scraper si presenta come segue:

site:$query

La query per questo scraper verrà trasformata: http://google.com -> site:http://google.com

Modelli nelle query

Nel formato della query è pienamente supportato il motore di modelli Template Toolkit, le variabili disponibili sono:

Macro di sostituzione

Il Formato comune della query supporta le seguenti macro:

MacroDescrizioneEsempi
{az:START:END}Sostituzione di una sequenza alfanumerica. Al posto di START si indica l'inizio della sequenza, al posto di END la fine. La lunghezza di END deve essere maggiore o uguale alla lunghezza di START. I caratteri alla fine della sequenza END devono essere successivi (in ordine alfabetico) ai caratteri all'inizio della sequenza START. È possibile utilizzare qualsiasi sequenza di caratteri UTF-8{az:a:z} - sostituzione di tutti i caratteri da a a z (a, b, c, ..., x, z). {az:aaa:zzz} - sostituzione di tutti i caratteri da aaa a zzz (aaa, aab, aac, ..., zzx, zzz). {az:a:zz} - sostituzione di tutti i caratteri da a a zz (a, b, c, ... aa, ab, ..., zx, zz). {az:00:99} - sostituzione di tutti i numeri da 00 a 99 (00, 01, 02, ..., 98, 99). {az:а:яяя} - sostituzione di tutti i caratteri cirillici da а a яяя (а, б, ... аа, аб, ... яяю, яяя)
{each:WORD1,WORD2,...}Sostituzione delle parole specificate WORD1, WORD2, ecc., la lunghezza non è limitata{each:green,blue,red,black} - sostituzione delle parole green, blue, red, black. {each:,buy,sell} - sostituzione di una parola vuota, poi buy e sell
{subs:NAME}Sostituzione di parole aggiuntive dai file nella cartella queries/subs/. Al posto di NAME è necessario indicare il nome del file, senza l'estensione .txt{subs:zones} - sostituzione di tutte le righe dal file queries/subs/zones.txt
{num:START:END}La macro itera i numeri nell'intervallo specificato. Al posto di START si indica l'inizio dell'intervallo, al posto di END la fine. Sono supportati i numeri decimali.{num:1:1000} - sostituzione di tutti i numeri da 1 a 1000 (1, 2, 3 ..., 999, 1000)
{num:START:END:STEP}La macro itera i numeri nell'intervallo specificato, con il passo indicato. Al posto di START si indica l'inizio dell'intervallo, al posto di END la fine, al posto di STEP il passo. Sono supportati i numeri decimali.{num:0:1000:10} - sostituzione di tutti i numeri da 0 a 1000 con passo 10 (0, 10, 20 ..., 990, 1000)
{num:END:START}La macro itera i numeri nell'intervallo specificato in ordine inverso. Al posto di END si indica la fine dell'intervallo, START indica l'inizio dell'intervallo. Sono supportati i numeri decimali.{num:1000:1} - sostituzione di tutti i numeri da 1000 a 1 (1000, 999, 998, ..., 2, 1)
{num:END:START:STEP}La macro itera i numeri nell'intervallo specificato in ordine inverso, con il passo indicato. Al posto di END si indica la fine dell'intervallo, START indica l'inizio dell'intervallo, al posto di STEP il passo. Sono supportati i numeri decimali.{num:1000:1:10} - sostituzione di tutti i numeri da 1000 a 1 con passo 10 (1000, 990, 980, ..., 10, 1)

⏩ Video: Macro di sostituzione

In questo video viene esaminato:

  • macro {num} negli esempi di paginazione e iterazione delle coordinate nello scraper Maps::GoogleMaps::Google
  • la macro {az} con l'esempio di scraping con inurl: per aumentare il numero di query e di conseguenza dei risultati
  • la macro {each} con l'esempio di scraping dei suggerimenti per la generazione di combinazioni di parole

Combinazione delle macro di sostituzione

Le macro di sostituzione possono essere combinate. Esempio complesso:

$query site:{subs:zones} {az:aa:zz}

Supponiamo che una delle query per lo scraping sia viagra, e nel file queries/subs/zones.txt ci sia il seguente elenco di zone: com, net, org, allora per lo scraping verrà inviato il seguente set di combinazioni:

viagra site:com ab  
...
viagra site:net jj
...
viagra site:eek.rg zz

Il numero totale di query corrisponderà alla moltiplicazione delle combinazioni possibili:

1 query (viagra) x 3 zone ({subs:zones}) x 676 variazioni di caratteri ({az:aa:zz}) = 2028 query