Strumenti del motore di modelli (tools)
Nel motore di template Template Toolkit è disponibile una variabile globale $tools, che contiene un insieme di strumenti accessibili in qualsiasi modello e all'interno degli scraper JS.
Esiste anche una variabile $tools.error, che contiene la descrizione degli errori, qualora si verifichino durante il funzionamento di tutti gli strumenti.
Aggiunta di query $tools.query.*
Questo strumento consente di aggiungere query a quelle già esistenti direttamente durante l'esecuzione dell'attività, formandole sulla base dei risultati già ottenuti dallo scraping. Può essere utilizzato come analogo della funzione Parse to level negli scraper in cui non è implementata. Esistono 2 metodi:
[% tools.query.add(query, maxLevel) %]- aggiunge una singola query[% tools.query.addAll(array, item, maxLevel) %]- aggiunge un array di query
Il parametro maxLevel indica fino a quale livello aggiungere le query ed è facoltativo: se omesso, lo scraper aggiungerà effettivamente nuove query finché ce ne sono. Si raccomanda inoltre di attivare l'opzione Unique queries (Deduplicazione delle query) per evitare loop infiniti e lavoro superfluo dello scraper.
È possibile impostare un livello arbitrario per le sotto-query. Questo può essere utilizzato per distribuire la logica, ovvero quando ogni livello rappresenta una funzionalità distinta.
esempio:
[% tools.query.add({query => query, lvl => 1}) %]- aggiunge una query a un livello specifico.
esempio per JS:
this.query.add({
query: "some query",
lvl: 1,
})

Risultato del preset nello screenshot:
scraper:
parser
what is parsing in programming
parsing in compiler
compiler and parser development
what is syntax analysis
difference between lexical analysis and syntax analysis
syntax analyzer
parser programming language
parser:
parser definition
xml parser
parser generator
parser swtor
parser c++
ffxiv parser
html parser
parser java
what is parsing in programming:
parse wikipedia
parser compiler
what is a parser
parsing programming languages
definition of parser
parsing c++
parser define
parsing java
html parser:
online html parser
html parser php
html parser java
...
Analisi di strutture JSON $tools.parseJSON()
Questo strumento consente di deserializzare dati in formato JSON in variabili (oggetti) accessibili nel motore di template. Esempio di utilizzo:
[% tools.parseJSON(data) %]
Dopo la deserializzazione, è possibile accedere alle chiavi dell'oggetto ottenuto come a normali variabili e array.
Se come argomento viene indicata una stringa con JSON non valido, lo scraper registrerà l'errore in $tools.error.

Output in CSV $tools.CSVline
Questo strumento converte automaticamente i valori nel formato CSV e aggiunge un'interruzione di riga; in questo modo, nel formato del risultato è sufficiente elencare le variabili desiderate e l'output sarà un file CSV valido, pronto per l'importazione in Google Docs / Excel / ecc.
Esempio di utilizzo:
[% tools.CSVline(query, p1.serp.0.link, p2.title) %]
Video con l'utilizzo di $tools.CSVline():
Lavoro con DB SQLite $tools.sqlite.*
Questo strumento consente di lavorare in modo facile e completo con i database SQLite. Esistono tre metodi:
$tools.sqlite.get()- metodo che consente di ottenere una singola informazione dal DB tramite SELECT, ad esempio:
[% res = tools.sqlite.get('results/test.sqlite', 'SELECT COUNT(*) AS count FROM test') %]
$tools.sqlite.run()- metodo che consente di eseguire operazioni sul DB (INSERT, DROP, ecc.), ad esempio:
[% res = tools.sqlite.run('results/test.sqlite', 'INSERT INTO test VALUES(?)', 'test') %]
$tools.sqlite.all()- metodo che consente di estrarre tutti i dati da una tabella, ad esempio:
[% res = tools.sqlite.get('results/test.sqlite', 'SELECT * FROM test') %]
Sostituzione dello user-agent $tools.ua.*
Questo strumento è progettato per sostituire lo user-agent negli scraper che lo utilizzano (ad esempio,
Net::HTTP). Esistono due metodi:
$tools.ua.list()- contiene l'elenco completo degli user-agent disponibili.$tools.ua.random()- restituisce uno user-agent casuale tra quelli disponibili.
Esempio di utilizzo:

L'elenco di tutti gli user-agent è memorizzato nel file files/tools/user-agents.txt, che può essere modificato se necessario.
Quando si utilizza questo strumento per il parametro User agent negli scraper, è necessario indicarlo esplicitamente:
[% tools.ua.random() %]
Supporto JS in tools $tools.js.*
Questo strumento consente di aggiungere le proprie funzioni JS e utilizzarle direttamente nel motore di template. È supportato anche l'uso di moduli Node.js. Le funzioni vengono aggiunte in Tools -> JavaScript Editor
Lavoro con base64 $tools.base64.*
Questo strumento consente di lavorare con base64 direttamente nello scraper. Questo strumento ha 2 metodi:
$tools.base64.encode()- codifica il testo in base64$tools.base64.decode()- decodifica una stringa base64 in testo
Esempio di utilizzo:

Riferimento dati $tools.data.*
Questo strumento è essenzialmente un oggetto che contiene una grande quantità di informazioni preimpostate: lingue, regioni, domini per i motori di ricerca, ecc. Elenco completo degli elementi (soggetto a modifiche future):
"YandexWordStatRegions", "TopDomains", "CountryCodes", "YahooLocalDomains", "GoogleDomains", "BingTranslatorLangs", "Top1000Words", "GoogleLangs", "GoogleInterfaceLangs", "EnglishMonths", "GoogleTrendsCountries"
Ognuno di questi elementi è un array o un hash di dati; è possibile visualizzarne il contenuto esportando i dati, ad esempio, in JSON:
[% tools.data.GoogleDomains.json() %]
Archivio dati in memoria $tools.memory.*
Un semplice archivio key/value in memoria, comune a tutte le attività, richieste API, ecc., che viene azzerato al riavvio dello scraper. Esistono tre metodi:
[% tools.memory.set(key, value) %]- imposta il valorevalueper la chiavekey[% tools.memory.get(key) %]- restituisce il valore corrispondente alla chiavekey[% tools.memory.delete(key) %]- elimina dalla memoria la voce corrispondente alla chiavekey
Ottenere informazioni sulla versione di A-Parser $tools.aparser.version()
Questo strumento consente di ottenere informazioni sulla versione di A-Parser e di visualizzarle nel risultato.
Esempio di utilizzo:
[% tools.aparser.version() %]
Ottenere l'ID dell'attività e il numero di thread $tools.task.*
Questo strumento consente di ottenere informazioni sull'ID dell'attività e mostrare il numero di thread. Esistono due metodi:
[% tools.task.id %]- restituisce l'ID dell'attività[% tools.task.threadsCount %]- restituisce il numero di thread utilizzati nell'attività
Arresto dell'attività $tools.task.stop()
Questo strumento consente di interrompere l'esecuzione dell'attività in qualsiasi momento. Come argomento viene accettata una stringa che deve contenere il motivo dell'arresto dell'attività.
Esempio di utilizzo:
[% IF query.num == 3;
tools.task.stop('Stop after 3 queries');
END %]