Hjälpmetoder (utils, tools, sleep)
this.utils.*
.updateResultsData(results, data)
await this.utils.updateResultsData(results, data) - metod för automatisk ifyllning av $pages.$i.data och $data, måste anropas för att lägga till innehåll på resultatsidan
.urlFromHTML(url, base)
await this.utils.urlFromHTML(url, base) - bearbetar en länk hämtad från HTML-kod - avkodar entiteter (& etc.), valfritt kan base skickas med - bas-URL (t.ex. URL för ursprungssidan), på så sätt kan en fullständig länk erhållas
.url.extractDomain(url, removeDefaultSubdomain)
await this.utils.url.extractDomain(url, removeDefaultSubdomain) - metoden tar en länk som första parameter och returnerar domänen från denna länk. Den andra valfria parametern avgör om subdomänen www ska tas bort från domänen. Standard är 0 - det vill säga att inte ta bort den.
.url.extractTopDomain(url)
await this.utils.url.extractTopDomain(url) - metoden tar en länk som första parameter och returnerar domänen från denna länk, utan subdomäner.
.url.extractTopDomainByZone(url)
await this.utils.url.extractTopDomainByZone(url) - metoden tar en länk som första parameter och returnerar domänen från denna länk, även utan subdomäner. Fungerar med alla regionala zoner
.url.extractMaxPath(url)
await this.utils.url.extractMaxPath(url) - metoden tar en sträng och extraherar en URL från den
.url.extractWOParams(url)
await this.utils.url.extractWOParams(url)- metoden tar en länk och returnerar samma länk beskuren fram till parametersträngen. Det vill säga, den returnerar URL:en fram till ?
.removeHtml(string)
await this.utils.removeHtml(string) - metoden tar en sträng och returnerar den rensad
från HTML-taggar
.removeNoDigit(string)
await this.utils.removeNoDigit(string) - metoden tar en sträng, tar bort allt utom siffror och returnerar resultatet
.removeComma(string)
await this.utils.removeComma(string) - metoden tar en sträng, tar bort tecken som .,\r\n och returnerar resultatet
.getAllBlocks(html, regexp, opts?)
await this.utils.getAllBlocks(html, regexp, opts?) - hämtar alla block på sidan med motsvarande avslutande taggar, metoden tar en HTML-sträng och ett reguljärt uttryck som anger början på blocket (alla block som har matchande avslutande taggar, till exempel <div>...</div>), som resultat returneras en array med alla hittade block
Alternativ opts:
searchStartIndex- anger indexet i strängen där sökningen ska börja, standard är0
const blocks = this.utils.getAllBlocks(html, /<div [^>]*?class="results"/)
.getAllBlocksByAttr(html, tag, attrName, attrRegExp, opts?)
await this.utils.getAllBlocksByAttr(html, tag, attrName, attrRegExp, opts?) - metod liknande .getAllBlocks, istället för ett reguljärt uttryck för att hitta början på blocket anges taggnamn, attributnamn som sökningen ska ske på (t.ex. id, class) och ett reguljärt uttryck som ska tillämpas på värdet av det angivna attributet
const blocks = this.utils.getAllBlocksByAttr(html, 'div', 'class', /results/)
await tools.*
Globalt objekt tools, ger tillgång till inbyggda funktioner i A-Parser
Motsvarighet till mallverktygen $tools.*
tools.query är inte tillgänglig, använd this.query
await tools.createTemplate(string)
Gör det möjligt att använda mallmotorn Template Toolkit inuti en 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!
Exempel på användning "Scraper för översättning av Markdown-formatering till HTML"
await this.sleep(sec)
await this.sleep(sec)
Ställer in en fördröjning i tråden i antal sekunder (sec), kan vara ett decimaltal.
await this.mutex.*
Mutex för synkronisering mellan trådar, gör det möjligt att låsa en kodsektion för en tråd
.lock()
Väntar på lås, exekveringen fortsätter för den första tråden som tog låset, övriga trådar väntar på att låset ska frigöras
.unlock()
Frigör låset, nästa tråd fortsätter exekveringen om den väntade på låset - .lock()
results.<array>.addElement()
Metoden results.<array>.addElement() gör det smidigare att fylla i arrayer i results. När den används behöver man inte komma ihåg ordningen på variablerna i arrayen eller räkna upp dem manuellt.
results.serp.addElement({
link: 'https://google.com',
anchor: 'Google',
snippet: 'Loreps ipsum...',
});
this.isContextAlive()
Denna metod är nödvändig för långlivade trådar som bearbetar frågor i en loop, vilket gör det möjligt att avsluta arbetet korrekt när uppgiften stoppas eller tas bort
while (this.isContextAlive()) {
await this.request(...)
}