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(...)
}