Hilfsmethoden (utils, tools, sleep)
this.utils.*
.updateResultsData(results, data)
await this.utils.updateResultsData(results, data) - Methode zum automatischen Ausfüllen von $pages.$i.data und $data, muss aufgerufen werden, um Content der Resultatseite hinzuzufügen
.urlFromHTML(url, base)
await this.utils.urlFromHTML(url, base) - verarbeitet einen aus dem HTML-Code erhaltenen Link - dekodiert Entities (& usw.), optional kann base übergeben werden - die Basis-URL (z. B. URL der Ausgangsseite), so kann ein vollständiger Link erhalten werden
.url.extractDomain(url, removeDefaultSubdomain)
await this.utils.url.extractDomain(url, removeDefaultSubdomain) - die Methode nimmt als ersten Parameter einen Link und gibt die Domain aus diesem Link zurück. Der zweite optionale Parameter bestimmt, ob die Subdomain www von der Domain abgeschnitten werden soll. Standardmäßig 0 - also nicht abschneiden.
.url.extractTopDomain(url)
await this.utils.url.extractTopDomain(url) - die Methode nimmt als ersten Parameter einen Link und gibt die Domain aus diesem Link zurück, ohne Subdomains.
.url.extractTopDomainByZone(url)
await this.utils.url.extractTopDomainByZone(url) - die Methode nimmt als ersten Parameter einen Link und gibt die Domain aus diesem Link zurück, ebenfalls ohne Subdomains. Funktioniert mit allen regionalen Zonen
.url.extractMaxPath(url)
await this.utils.url.extractMaxPath(url) - die Methode nimmt einen String entgegen und extrahiert daraus eine URL
.url.extractWOParams(url)
await this.utils.url.extractWOParams(url)- die Methode nimmt einen Link entgegen und gibt denselben Link gekürzt bis zum Parameter-String zurück. Das heißt, sie gibt die URL bis zum ? zurück
.removeHtml(string)
await this.utils.removeHtml(string) - die Methode nimmt einen String entgegen und gibt ihn bereinigt
von HTML-Tags zurück
.removeNoDigit(string)
await this.utils.removeNoDigit(string) - die Methode nimmt einen String entgegen, entfernt daraus alles außer Ziffern und gibt das Ergebnis zurück
.removeComma(string)
await this.utils.removeComma(string) - die Methode nimmt einen String entgegen, entfernt daraus Zeichen wie .,\r\n und gibt das Ergebnis zurück
.getAllBlocks(html, regexp, opts?)
await this.utils.getAllBlocks(html, regexp, opts?) - Abrufen aller Blöcke auf der Seite mit den entsprechenden schließenden Tags; die Methode nimmt einen HTML-String und einen regulären Ausdruck entgegen, der den Anfang des Blocks angibt (beliebige Blöcke mit paarigen schließenden Tags, z. B. <div>...</div>), als Ergebnis wird ein Array aller gefundenen Blöcke zurückgegeben
Optionen opts:
searchStartIndex- gibt den Index im String an, ab dem die Suche beginnen soll, standardmäßig0
const blocks = this.utils.getAllBlocks(html, /<div [^>]*?class="results"/)
.getAllBlocksByAttr(html, tag, attrName, attrRegExp, opts?)
await this.utils.getAllBlocksByAttr(html, tag, attrName, attrRegExp, opts?) - Methode analog zu .getAllBlocks, anstelle eines regulären Ausdrucks zur Suche des Blockanfangs werden der Tag-Name, der Attributname für die Suche (z. B. id, class) und ein regulärer Ausdruck angegeben, der auf den Wert des angegebenen Attributs angewendet wird
const blocks = this.utils.getAllBlocksByAttr(html, 'div', 'class', /results/)
await tools.*
Globales Objekt tools, ermöglicht den Zugriff auf die integrierten Funktionen von A-Parser
Analog zu den Template-Engine-Tools $tools.*
tools.query ist nicht verfügbar, es muss this.query verwendet werden
await tools.createTemplate(string)
Ermöglicht die Verwendung der Template-Engine Template Toolkit innerhalb des JavaScript-Parsers.
let template = await tools.createTemplate("Hello [% content %]!")
template = typeof template == 'function' ? await template({content: 'World'}) : template
this.logger.put(template) // Output: Hello World!
Beispiel für die Verwendung "Parser zur Übersetzung von Markdown-Markup in HTML"
await this.sleep(sec)
await this.sleep(sec)
Setzt eine Verzögerung im Thread für eine Anzahl von Sekunden (sec) fest, kann ein Dezimalwert sein.
await this.mutex.*
Mutex zur Synchronisation zwischen Threads, ermöglicht das Sperren eines Codeabschnitts für einen Thread
.lock()
Warten auf den Lock; die Ausführung wird durch den ersten Thread fortgesetzt, der den Lock erfasst hat, andere Threads warten auf die Freigabe des Locks
.unlock()
Freigabe des Locks; der nächste Thread setzt die Ausführung fort, falls er auf den Lock gewartet hat - .lock()
results.<array>.addElement()
Die Methode results.<array>.addElement() ermöglicht ein bequemeres Befüllen von Arrays in results. Bei ihrer Verwendung muss man sich nicht an die Reihenfolge der Variablen im Array erinnern und diese manuell aufzählen.
results.serp.addElement({
link: 'https://google.com',
anchor: 'Google',
snippet: 'Loreps ipsum...',
});
this.isContextAlive()
Diese Methode ist für langlebige Threads erforderlich, die in einer Schleife Abfragen verarbeiten, und ermöglicht ein korrektes Beenden der Arbeit beim Stoppen oder Löschen einer Aufgabe
while (this.isContextAlive()) {
await this.request(...)
}