Vai al contenuto principale

Metodi ausiliari (utils, tools, sleep)

this.utils.*​

.updateResultsData(results, data)​

await this.utils.updateResultsData(results, data) - metodo per la compilazione automatica di $pages.$i.data e $data, deve essere chiamato per aggiungere il contenuto della pagina risultante

.urlFromHTML(url, base)​

await this.utils.urlFromHTML(url, base) - elabora un link ottenuto dal codice HTML - decodifica le entities (& ecc.), opzionalmente si può passare base - l'URL di base (ad esempio l'URL della pagina di origine), in questo modo si può ottenere un link completo

.url.extractDomain(url, removeDefaultSubdomain)​

await this.utils.url.extractDomain(url, removeDefaultSubdomain) - il metodo accetta come primo parametro un link e restituisce il dominio da questo link. Il secondo parametro opzionale determina se rimuovere il sottodominio www dal dominio. Di default è 0 - ovvero non rimuovere.

.url.extractTopDomain(url)​

await this.utils.url.extractTopDomain(url) - il metodo accetta come primo parametro un link e restituisce il dominio da questo link, senza sottodomini.

.url.extractTopDomainByZone(url)​

await this.utils.url.extractTopDomainByZone(url) - il metodo accetta come primo parametro un link e restituisce il dominio da questo link, inclusi i casi senza sottodomini. Funziona con tutte le zone regionali

.url.extractMaxPath(url)​

await this.utils.url.extractMaxPath(url) - il metodo accetta una stringa ed estrae da essa l'URL

.url.extractWOParams(url)​

await this.utils.url.extractWOParams(url)- il metodo accetta un link e restituisce lo stesso link tagliato prima della stringa dei parametri. Ovvero restituirà l'URL fino al ?

.removeHtml(string)​

await this.utils.removeHtml(string) - il metodo accetta una stringa e la restituisce pulita dai tag HTML

.removeNoDigit(string)​

await this.utils.removeNoDigit(string) - il metodo accetta una stringa, rimuove tutto tranne le cifre e restituisce il risultato

.removeComma(string)​

await this.utils.removeComma(string) - il metodo accetta una stringa, rimuove caratteri come .,\r\n e restituisce il risultato

.getAllBlocks(html, regexp, opts?)​

await this.utils.getAllBlocks(html, regexp, opts?) - recupero di tutti i blocchi in una pagina con i relativi tag di chiusura, il metodo accetta una stringa HTML e un'espressione regolare che indica l'inizio del blocco (qualsiasi blocco che abbia tag di chiusura accoppiati, ad esempio <div>...</div>), come risultato viene restituito un array di tutti i blocchi trovati

Opzioni opts:

  • searchStartIndex - indica l'indice nella stringa da cui iniziare la ricerca, di default 0
const blocks = this.utils.getAllBlocks(html, /<div [^>]*?class="results"/)

.getAllBlocksByAttr(html, tag, attrName, attrRegExp, opts?)​

await this.utils.getAllBlocksByAttr(html, tag, attrName, attrRegExp, opts?) - metodo analogo a .getAllBlocks, invece dell'espressione regolare per cercare l'inizio del blocco si specifica il nome del tag, il nome dell'attributo su cui effettuare la ricerca (ad esempio id, class) e l'espressione regolare da applicare al valore dell'attributo specificato

const blocks = this.utils.getAllBlocksByAttr(html, 'div', 'class', /results/)

await tools.*​

Oggetto globale tools, consente di accedere alle funzioni integrate di A-Parser

Analogo degli strumenti del motore di modelli $tools.*

nota

tools.query non è disponibile, è necessario utilizzare this.query

await tools.createTemplate(string)​

Consente di utilizzare il motore di modelli Template Toolkit all'interno dello JavaScript scraper.

let template = await tools.createTemplate("Hello [% content %]!")
template = typeof template == 'function' ? await template({content: 'World'}) : template
this.logger.put(template) // Output: Hello World!

Esempio di utilizzo "Scraper per la traduzione della formattazione Markdown in HTML"

await this.sleep(sec)​

await this.sleep(sec)

Imposta un ritardo nel thread per un numero di secondi (sec), può essere frazionario.

await this.mutex.*​

Mutex per la sincronizzazione tra i thread, consente di bloccare una sezione di codice per un singolo thread

.lock()​

Attesa del lock, l'esecuzione continuerà per il primo thread che ha acquisito il lock, gli altri thread attenderanno il rilascio del lock

.unlock()​

Rilascio del lock, il thread successivo continuerà l'esecuzione se era in attesa del lock - .lock()

results.<array>.addElement()​

Il metodo results.<array>.addElement() consente di compilare più comodamente gli array in results. Utilizzandolo non è necessario ricordare la sequenza delle variabili nell'array ed elencarle manualmente.

results.serp.addElement({
link: 'https://google.com',
anchor: 'Google',
snippet: 'Loreps ipsum...',
});

this.isContextAlive()​

Questo metodo è necessario per i thread a lunga durata che elaborano le query in un ciclo, consentendo di terminare correttamente il lavoro all'arresto o alla rimozione dell'attività

while (this.isContextAlive()) {
await this.request(...)
}