Hulpmethoden (utils, tools, sleep)
this.utils.*
.updateResultsData(results, data)
await this.utils.updateResultsData(results, data) - methode voor het automatisch invullen van $pages.$i.data en $data, moet worden aangeroepen om content aan de resultaatpagina toe te voegen
.urlFromHTML(url, base)
await this.utils.urlFromHTML(url, base) - verwerkt een link verkregen uit HTML-code - decodeert entities (& enz.), optioneel kan base worden meegegeven - de basis-URL (bijvoorbeeld de URL van de bronpagina), zodat een volledige link kan worden verkregen
.url.extractDomain(url, removeDefaultSubdomain)
await this.utils.url.extractDomain(url, removeDefaultSubdomain) - methode accepteert een link als eerste parameter en retourneert het domein van deze link. De tweede optionele parameter bepaalt of het subdomein www van het domein moet worden verwijderd. Standaard 0 - dus niet verwijderen.
.url.extractTopDomain(url)
await this.utils.url.extractTopDomain(url) - methode accepteert een link als eerste parameter en retourneert het domein van deze link, zonder subdomeinen.
.url.extractTopDomainByZone(url)
await this.utils.url.extractTopDomainByZone(url) - methode accepteert een link als eerste parameter en retourneert het domein van deze link, inclusief zonder subdomeinen. Werkt met alle regionale zones
.url.extractMaxPath(url)
await this.utils.url.extractMaxPath(url) - methode accepteert een string en selecteert daaruit een URL
.url.extractWOParams(url)
await this.utils.url.extractWOParams(url)- methode accepteert een link en retourneert dezelfde link ingekort tot de parameterstring. Dat wil zeggen, het retourneert de URL tot aan de ?
.removeHtml(string)
await this.utils.removeHtml(string) - methode accepteert een string en retourneert deze ontdaan
van HTML-tags
.removeNoDigit(string)
await this.utils.removeNoDigit(string) - methode accepteert een string, verwijdert alles behalve cijfers en retourneert het resultaat
.removeComma(string)
await this.utils.removeComma(string) - methode accepteert een string, verwijdert tekens zoals .,\r\n en retourneert het resultaat
.getAllBlocks(html, regexp, opts?)
await this.utils.getAllBlocks(html, regexp, opts?) - ophalen van alle blokken op de pagina met de bijbehorende sluit-tags, de methode accepteert een HTML-string en een reguliere expressie die het begin van het blok aangeeft (alle blokken die gepaarde sluit-tags hebben, bijvoorbeeld <div>...</div>), als resultaat wordt een array van alle gevonden blokken geretourneerd
Opties opts:
searchStartIndex- geeft de index in de string aan waar het zoeken moet beginnen, standaard0
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 vergelijkbaar met .getAllBlocks, in plaats van een reguliere expressie om het begin van het blok te zoeken, wordt de tagnaam, de attribuutnaam waarop gezocht wordt (bijvoorbeeld id, class) en een reguliere expressie die wordt toegepast op de waarde van het opgegeven attribuut opgegeven
const blocks = this.utils.getAllBlocksByAttr(html, 'div', 'class', /results/)
await tools.*
Globaal object tools, geeft toegang tot de ingebouwde functies van A-Parser
Analoog aan template engine tools $tools.*
tools.query is niet beschikbaar, gebruik this.query
await tools.createTemplate(string)
Maakt het mogelijk om de Template Toolkit template engine binnen de JavaScript scraper te gebruiken.
let template = await tools.createTemplate("Hello [% content %]!")
template = typeof template == 'function' ? await template({content: 'World'}) : template
this.logger.put(template) // Output: Hello World!
Voorbeeld van gebruik "Scraper voor het vertalen van Markdown-opmaak naar HTML"
await this.sleep(sec)
await this.sleep(sec)
Stelt een vertraging in de thread in voor een aantal seconden (sec), kan een decimaal getal zijn.
await this.mutex.*
Mutex voor synchronisatie tussen threads, maakt het mogelijk om een sectie code te blokkeren voor één thread
.lock()
Wachten op een lock, de uitvoering wordt voortgezet door de eerste thread die de lock heeft verkregen, andere threads wachten tot de lock wordt vrijgegeven
.unlock()
Vrijgeven van de lock, de volgende thread gaat verder met de uitvoering als deze wachtte op de lock - .lock()
results.<array>.addElement()
De methode results.<array>.addElement() maakt het handiger om arrays in results te vullen. Bij gebruik hiervan hoeft u de volgorde van variabelen in de array niet te onthouden en ze niet handmatig op te sommen.
results.serp.addElement({
link: 'https://google.com',
anchor: 'Google',
snippet: 'Loreps ipsum...',
});
this.isContextAlive()
Deze methode is nodig voor langlopende threads die queries in een lus verwerken, waardoor het werk correct kan worden beëindigd wanneer de taak wordt gestopt of verwijderd
while (this.isContextAlive()) {
await this.request(...)
}