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

- Formato della query per il 1° scraper
- Formato della query per il 2° scraper
- 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:
$query- la query dopo la formattazione tramite il formato comune del risultato$query.num- numero progressivo della query$query.lvl- livello di annidamento della query quando si utilizzano le opzioni Parse to level o Parse all results$query.orig- query originale prima della formattazione$query.first- la prima query quando si utilizzano le opzioni Parse to level o Parse all results$query.prev- mostra la query che era al livello precedente, funziona per
HTML::LinkExtractor, $tools.query.add e per gli scraper JS this.query.add- Tutte le variabili create tramite il Costruttore di query
Macro di sostituzione
Il Formato comune della query supporta le seguenti macro:
| Macro | Descrizione | Esempi |
|---|---|---|
| {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::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