Passer au contenu principal

Méthodes auxiliaires (utils, tools, sleep)

this.utils.*

.updateResultsData(results, data)

await this.utils.updateResultsData(results, data) - méthode pour le remplissage automatique de $pages.$i.data et $data, doit être appelée pour ajouter du contenu à la page de résultat

.urlFromHTML(url, base)

await this.utils.urlFromHTML(url, base) - traite un lien obtenu à partir du code HTML - décode les entités (& etc.), on peut optionnellement passer base - l'URL de base (par exemple l'URL de la page source), permettant ainsi d'obtenir un lien complet

.url.extractDomain(url, removeDefaultSubdomain)

await this.utils.url.extractDomain(url, removeDefaultSubdomain) - la méthode prend en premier paramètre un lien et retourne le domaine de ce lien. Le second paramètre optionnel détermine s'il faut supprimer le sous-domaine www du domaine. Par défaut 0 - c'est-à-dire ne pas supprimer.

.url.extractTopDomain(url)

await this.utils.url.extractTopDomain(url) - la méthode prend en premier paramètre un lien et retourne le domaine de ce lien, sans les sous-domaines.

.url.extractTopDomainByZone(url)

await this.utils.url.extractTopDomainByZone(url) - la méthode prend en premier paramètre un lien et retourne le domaine de ce lien, sans les sous-domaines également. Fonctionne avec toutes les zones régionales

.url.extractMaxPath(url)

await this.utils.url.extractMaxPath(url) - la méthode prend une chaîne de caractères et en extrait l'URL

.url.extractWOParams(url)

await this.utils.url.extractWOParams(url)- la méthode prend un lien et retourne ce même lien tronqué avant la chaîne de paramètres. C'est-à-dire qu'elle retournera l'URL jusqu'au ?

.removeHtml(string)

await this.utils.removeHtml(string) - la méthode prend une chaîne de caractères et la retourne nettoyée des balises HTML

.removeNoDigit(string)

await this.utils.removeNoDigit(string) - la méthode prend une chaîne de caractères, en supprime tout sauf les chiffres et retourne le résultat

.removeComma(string)

await this.utils.removeComma(string) - la méthode prend une chaîne de caractères, en supprime les caractères tels que .,\r\n et retourne le résultat

.getAllBlocks(html, regexp, opts?)

await this.utils.getAllBlocks(html, regexp, opts?) - obtention de tous les blocs sur la page avec les balises de fermeture correspondantes, la méthode prend une chaîne HTML et une expression régulière qui indique le début du bloc (tous les blocs qui ont des balises de fermeture paires, par exemple <div>...</div>), retourne en résultat un tableau de tous les blocs trouvés

Options opts:

  • searchStartIndex - indique l'index dans la chaîne à partir duquel commencer la recherche, par défaut 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?) - méthode analogue à .getAllBlocks, au lieu d'une expression régulière pour la recherche du début du bloc, on indique le nom de la balise, le nom de l'attribut sur lequel portera la recherche (par exemple id, class) et l'expression régulière qui sera appliquée à la valeur de l'attribut donné

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

await tools.*

Objet global tools, permet d'accéder aux fonctions intégrées d'A-Parser

Analogue aux outils du moteur de gabarit $tools.*

note

tools.query n'est pas disponible, il faut utiliser this.query

await tools.createTemplate(string)

Permet d'utiliser le moteur de gabarit Template Toolkit à l'intérieur du scraper JavaScript.

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

Exemple d'utilisation "Scraper de traduction de balisage Markdown en HTML"

await this.sleep(sec)

await this.sleep(sec)

Définit un délai dans le thread pour un nombre de secondes (sec), peut être fractionnaire.

await this.mutex.*

Mutex pour la synchronisation entre les threads, permet de verrouiller une section de code pour un seul thread

.lock()

Attente du verrou (lock), l'exécution continuera pour le premier thread ayant saisi le verrou, les autres threads attendront la libération du verrou

.unlock()

Libération du verrou, le thread suivant continuera l'exécution s'il attendait le verrou - .lock()

results.<array>.addElement()

La méthode results.<array>.addElement() permet de remplir plus facilement les tableaux dans results. Lors de son utilisation, il n'est pas nécessaire de se souvenir de l'ordre des variables dans le tableau ni de les énumérer manuellement.

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

this.isContextAlive()

Cette méthode est nécessaire pour les threads à longue durée de vie qui traitent des requêtes en boucle, permettant de terminer correctement le travail lors de l'arrêt ou de la suppression de la tâche

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