Verktyg för mallhanterare (tools)
I mallmotorn Template Toolkit finns en global variabel $tools tillgänglig, som innehåller en uppsättning verktyg som är tillgängliga i alla mallar och inuti JS-scrapers.
Det finns också en variabel $tools.error, som innehåller felbeskrivningar om sådana uppstår under körning av alla verktyg.
Lägga till frågor $tools.query.*
Detta verktyg gör det möjligt att lägga till frågor till de redan befintliga direkt under körning av en uppgift, genom att utforma dem baserat på redan skrapade resultat. Det kan användas som en motsvarighet till funktionen Parse to level i de scrapers där den inte är implementerad. Det finns 2 metoder:
[% tools.query.add(query, maxLevel) %]- lägger till en enskild fråga[% tools.query.addAll(array, item, maxLevel) %]- lägger till en array med frågor
Parametern maxLevel anger upp till vilken nivå frågor ska läggas till och är valfri: om den utelämnas kommer scrapers i praktiken att lägga till nya frågor så länge de finns. Det rekommenderas också att aktivera alternativet Unique queries (Unika frågor) för att undvika loopar och onödigt arbete för din scraper.
Det är möjligt att ange en godtycklig nivå för underfrågor. Detta kan användas för att fördela logik, det vill säga när varje nivå är en separat funktionalitet.
exempel:
[% tools.query.add({query => query, lvl => 1}) %]- lägger till en fråga på en specifik nivå.
exempel för JS:
this.query.add({
query: "some query",
lvl: 1,
})

Resultat av förinställningen på skärmdumpen:
scraper:
parser
what is parsing in programming
parsing in compiler
compiler and parser development
what is syntax analysis
difference between lexical analysis and syntax analysis
syntax analyzer
parser programming language
parser:
parser definition
xml parser
parser generator
parser swtor
parser c++
ffxiv parser
html parser
parser java
what is parsing in programming:
parse wikipedia
parser compiler
what is a parser
parsing programming languages
definition of parser
parsing c++
parser define
parsing java
html parser:
online html parser
html parser php
html parser java
...
Analys av JSON-strukturer $tools.parseJSON()
Detta verktyg gör det möjligt att deserialisera data i JSON-format till variabler (objekt) som är tillgängliga i mallmotorn. Exempel på användning:
[% tools.parseJSON(data) %]
Efter deserialisering kan nycklarna från det erhållna objektet nås som vanliga variabler och arrayer.
Om en sträng med ogiltig JSON anges som argument, kommer din scraper att skriva felet i $tools.error.

Utmatning till CSV $tools.CSVline
Detta verktyg konverterar automatiskt värden till CSV-format och lägger till en radbrytning. Därmed räcker det att lista de önskade variablerna i resultatformatet, och utmatningen blir en giltig CSV-fil, redo för import till Google Docs / Excel / etc.
Exempel på användning:
[% tools.CSVline(query, p1.serp.0.link, p2.title) %]
Video som använder $tools.CSVline():
Arbete med SQLite-databaser $tools.sqlite.*
Detta verktyg gör det möjligt att enkelt och fullständigt arbeta med SQLite-databaser. Det finns tre metoder:
$tools.sqlite.get()- metod för att hämta en enskild uppgift från databasen med SELECT, till exempel:
[% res = tools.sqlite.get('results/test.sqlite', 'SELECT COUNT(*) AS count FROM test') %]
$tools.sqlite.run()- metod för att utföra operationer i databasen (INSERT, DROP etc.), till exempel:
[% res = tools.sqlite.run('results/test.sqlite', 'INSERT INTO test VALUES(?)', 'test') %]
$tools.sqlite.all()- metod för att hämta all data från en tabell, till exempel:
[% res = tools.sqlite.get('results/test.sqlite', 'SELECT * FROM test') %]
Ersättning av user-agent $tools.ua.*
Detta verktyg är utformat för att byta ut user-agent i scrapers som använder det (till exempel
Net::HTTP). Det finns två metoder:
$tools.ua.list()- innehåller en fullständig lista över tillgängliga user-agents.$tools.ua.random()- returnerar en slumpmässig user-agent från de tillgängliga.
Exempel på användning:

Listan över alla user-agents lagras i filen files/tools/user-agents.txt, som kan redigeras vid behov.
När detta verktyg används för parametern User agent i scrapers, måste det anges explicit:
[% tools.ua.random() %]
JS-stöd i tools $tools.js.*
Detta verktyg gör det möjligt att lägga till egna JS-funktioner och använda dem direkt i mallmotorn. Användning av Node.js-moduler stöds också. Funktioner läggs till i Tools -> JavaScript Editor
Arbete med base64 $tools.base64.*
Detta verktyg gör det möjligt att arbeta med base64 direkt i din scraper. Verktyget har 2 metoder:
$tools.base64.encode()- kodar text till base64$tools.base64.decode()- dekodar en base64-sträng till text
Exempel på användning:

Datareferens $tools.data.*
Detta verktyg är i grunden ett objekt som innehåller en stor mängd förinställd information - språk, regioner, domäner för sökmotorer etc. Fullständig lista över element (kan ändras i framtiden):
"YandexWordStatRegions", "TopDomains", "CountryCodes", "YahooLocalDomains", "GoogleDomains", "BingTranslatorLangs", "Top1000Words", "GoogleLangs", "GoogleInterfaceLangs", "EnglishMonths", "GoogleTrendsCountries"
Varje element är en array eller en hash av data. Du kan se innehållet genom att mata ut data, till exempel i JSON:
[% tools.data.GoogleDomains.json() %]
Datalagring i minnet $tools.memory.*
En enkel key/value-lagring i minnet, gemensam för alla uppgifter, API-förfrågningar etc., som nollställs när A-Parser startas om. Det finns tre metoder:
[% tools.memory.set(key, value) %]- sätter värdetvalueför nyckelnkey[% tools.memory.get(key) %]- returnerar värdet som motsvarar nyckelnkey[% tools.memory.delete(key) %]- tar bort posten för nyckelnkeyfrån minnet
Hämta information om A-Parser-version $tools.aparser.version()
Detta verktyg gör det möjligt att hämta information om versionen av A-Parser och visa den i resultatet.
Exempel på användning:
[% tools.aparser.version() %]
Hämta uppgifts-ID och antal trådar $tools.task.*
Detta verktyg gör det möjligt att hämta information om uppgiftens ID och visa antalet trådar. Det finns två metoder:
[% tools.task.id %]- returnerar uppgiftens ID[% tools.task.threadsCount %]- returnerar antalet trådar som används i uppgiften
Stoppa uppgift $tools.task.stop()
Detta verktyg gör det möjligt att stoppa körningen av en uppgift när som helst. Som argument tas en sträng emot som ska innehålla orsaken till att uppgiften stoppas.
Exempel på användning:
[% IF query.num == 3;
tools.task.stop('Stop after 3 queries');
END %]