Ga naar de hoofdinhoud

Kenmerken van het werken met sjablonen in A-Parser

Sjablonen testen

Voor het debuggen en testen van sjablonen in A-Parser is er een speciaal hulpmiddel: Sjablonen testen

Methode .format voor arrays

In A-Parser worden de meeste resultaten weergegeven als arrays met geneste elementen. Technisch gezegd - de resultaten worden weergegeven als een array van hashes, waarbij elke hash vaste sleutels heeft. Laten we dit bekijken aan de hand van de scraper SE::GoogleSE::Google; in de resultaten bevat deze een array $serp met daarin de elementen $link, $anchor en $snippet (en andere):

"serp" : [
{
"link" : "http://www.speedtest.net/",
"anchor" : "Speedtest.net by Ookla - The Global Broadband Speed <b>Test</b>",
"snippet" : "<b>Test</b> your Internet connection bandwidth to locations around the world with this <br>interactive broadband speed <b>test</b> from Ookla."
},
{
"link" : "http://www.speakeasy.net/speedtest/",
"anchor" : "Speakeasy Speed <b>Test</b>",
"snippet" : "Speakeasy Speed <b>Test</b> - Broadband Speed <b>Test</b>. Go to MegaPath Speed <b>Test</b> ... <br>02:38:36 PM Your IP: The Speakeasy Speed <b>Test</b> requires Flash v7 or higher."
},
{
"link" : "http://en.wikipedia.org/wiki/Test_cricket",
"anchor" : "<b>Test</b> cricket - Wikipedia, the free encyclopedia",
"snippet" : "<b>Test</b> cricket is the longest form of the sport of cricket. <b>Test</b> matches are played <br>between national representative teams with &quot;<b>Test</b> status&quot;, as determined by the&nbsp;..."
}
]

Voor het handig doorlopen en uitvoeren van gegevens uit een dergelijke array is de methode .format gemaakt, waarmee alle elementen van de array volgens een bepaald formaat kunnen worden samengevoegd, bijvoorbeeld alle links gescheiden door een nieuwe regel:

$serp.format('$link\n')

Wat resulteert in het opslaan van elke link op een nieuwe regel:

http://www.speedtest.net/
http://www.speakeasy.net/speedtest/
http://en.wikipedia.org/wiki/Test_cricket

Uitvoer van snippets:

$serp.format('$snippet\n')
<b>Test</b> your Internet connection bandwidth to locations around the world with this <br>interactive broadband speed <b>test</b> from Ookla.
Speakeasy Speed <b>Test</b> - Broadband Speed <b>Test</b>. Go to MegaPath Speed <b>Test</b> ...<br>02:38:36 PM Your IP: The Speakeasy Speed <b>Test</b> requires Flash v7 or higher.
<b>Test</b> cricket is the longest form of the sport of cricket. <b>Test</b> matches are played <br>between national representative teams with &quot;<b>Test</b> status&quot;, as determined by the&nbsp;...

Links, anchors en snippets tegelijkertijd:

$serp.format('Link: $link, Anchor: $anchor, Snippet: $snippet\n')
Link: http://www.speedtest.net/, Anchor: Speedtest.net by Ookla - The Global Broadband Speed <b>Test</b>, Snippet: <b>Test</b> your Internet connection bandwidth to locations around the world with this <br>interactive broadband speed <b>test</b> from Ookla.Link: http://www.speedtest.net/, Anchor: Speedtest.net by Ookla - The Global Broadband Speed <b>Test</b>, Snippet: <b>Test</b> your Internet connection bandwidth to locations around the world with this <br>interactive broadband speed <b>test</b> from Ookla.
Link: http://www.speakeasy.net/speedtest/, Anchor: Speakeasy Speed <b>Test</b>, Snippet: Speakeasy Speed <b>Test</b> - Broadband Speed <b>Test</b>. Go to MegaPath Speed <b>Test</b> ... <br>02:38:36 PM Your IP: The Speakeasy Speed <b>Test</b> requires Flash v7 or higher.Link: http://www.speakeasy.net/speedtest/, Anchor: Speakeasy Speed <b>Test</b>, Snippet: Speakeasy Speed <b>Test</b> - Broadband Speed <b>Test</b>. Go to MegaPath Speed <b>Test</b> ... <br>02:38:36 PM Your IP: The Speakeasy Speed <b>Test</b> requires Flash v7 or higher.
Link: http://en.wikipedia.org/wiki/Test_cricket, Anchor: <b>Test</b> cricket - Wikipedia, the free encyclopedia, Snippet: <b>Test</b> cricket is the longest form of the sport of cricket. <b>Test</b> matches are played <br>between national representative teams with &quot;<b>Test</b> status&quot;, as determined by the&nbsp;...Link: http://en.wikipedia.org/wiki/Test_cricket, Anchor: <b>Test</b> cricket - Wikipedia, the free encyclopedia, Snippet: <b>Test</b> cricket is the longest form of the sport of cricket. <b>Test</b> matches are played <br>between national representative teams with &quot;<b>Test</b> status&quot;, as determined by the&nbsp;...

In het formaat kan ook de oorspronkelijke query (of andere beschikbare variabelen) worden gebruikt, waardoor een overeenkomst tussen query en elk element van de array kan worden ingesteld:

$serp.format('$query: $link\n')
test: http://www.speedtest.net/
test: http://www.speakeasy.net/speedtest/
test: http://en.wikipedia.org/wiki/Test_cricket

Methode .json voor objecten

Zoals bekend worden alle gegevens in A-Parser weergegeven als variabelen. Er bestaat een methode voor serialisatie (omzetting naar het type String) van dergelijke gegevens naar JSON-formaat: .json. Bijvoorbeeld:

$results.json
Voorbeeld

Vlag voor statisch sjabloon in de Bestandsnaam van het resultaat

De vlag isStaticTemplate() maakt het mogelijk om een dynamisch sjabloon in de Bestandsnaam van het resultaat statisch te maken. Werkingsprincipe: bij gebruik van deze vlag in de Bestandsnaam van het resultaat, wordt het sjabloon één keer uitgevoerd bij de start van de taak en wordt het daarmee als statisch beschouwd. Dit maakt flexibelere bestandsnaamgeving mogelijk terwijl de mogelijkheid behouden blijft om links naar de bestanden te verkrijgen via de API-methode getTaskResultsFile.

Gebruiksvoorbeeld:

[% isStaticTemplate(); tools.js.eval('Date.now()') %]

Beschikbare variabelen

Bij het formatteren van queries

Bij het formatteren van resultaten

Bij het vormen van de bestandsnaam van resultaten

Bij het filteren van resultaten

Variabele-interpolatie

Standaard worden sjablonen geschreven tussen de tags [% en %], alles buiten de tags is gewone tekst die ongewijzigd in het resultaat wordt opgenomen. In A-Parser is aanvullend variabele-interpolatie ingeschakeld, waardoor variabelen in de tekst kunnen worden aangeroepen via het symbool $. Daarnaast wordt ook \n geïnterpoleerd als een expliciete regelterugloop.

Voorbeeld:

Totaal resultaten voor query $query: $totalcount\n

Op de plaats van $query en $totalcount worden de waarden van de betreffende variabelen ingevuld, \n wordt vervangen door een regelterugloop. Gelijkwaardige notatie zonder gebruik van interpolatie:

Totaal resultaten voor query [% query %]: [% totalcount; "\n" %]
opmerking

Let op: in Template Toolkit-sjablonen worden variabelen geschreven zonder het voorvoegsel $.

Gebruiksscenario's voor sjablonen

Formatteren van queries

Voorbeeld

In dit voorbeeld wordt aan elk domein uit het bestand Alexa top500.txt de zoekoperator site: toegevoegd en worden na een spatie substituties uit het bestand words.txt toegevoegd.

Formatteren van resultaten

Sjabloon in resultaatformaat

In dit voorbeeld worden de query, het aantal resultaten in de zoekresultaten en het aantal gerelateerde trefwoorden weergegeven. Ook wordt een lijst met verzamelde anchors getoond.

Sjablonen bij het filteren van resultaten

Sjabloon bij filteren van resultaten

Om een sjabloon te kunnen opgeven, moet in de vervolgkeuzelijst Custom Template worden geselecteerd.
In dit voorbeeld worden alleen die queries als resultaat weergegeven waarvoor minder dan 5 resultaten zijn verzameld.

Sjablonen bij gebruik van de optie Gebruik regex

Sjabloon bij gebruik van regex

In dit voorbeeld verzamelt de scraper zinnen die het woord bevatten dat als tweede argument van de query is doorgegeven. Het algoritme werkt als volgt: de query wordt door de Query Constructor gesplitst op het opgegeven scheidingsteken in een link en een woord; de scraper bezoekt de link, selecteert de tekst; het woord uit de query wordt in de reguliere expressie geplaatst en daarmee worden de zinnen verzameld.

Voorbeeld downloaden

Hoe een voorbeeld te importeren in A-Parser

eJyNVE1T2zAQ/StUEwYo1EkoDK0vncA003YCoSScHLejxmtXjWwZSYZkQv57d2XH
diiHXmTp6b3d1X54zSw3C3OrwYA1zA/WLHd75rMIYl5Iy05YzrUBTdcB+zK9Hvn+
FJb289JqPrdKI6Pmrpld5YDqeWGsSu/AlCZ0ufEDZlFqEKEvC+kmgSUKDoNZ0Tvr
997R5zQOgx/em0+zWTab6fA42N97KECvvAWs9vZ37t4GuA+Pj1hlalr6F0nttUK4
1nyFoPve8JQwY7XIElNT6Y0VyMJNGNb4UOmUU1Y6ed+rVF7swMODTglgQAdHjakJ
f4SpQkksJDTwEE+V907ELdDt1tKRZ5eULR5FwgqVcVn6pbCaWO4zgclAfaaQS3kR
YIZapQi5rJbgahtzwDruTNkunPZ7qWF+zKWBE2Yw1CHHQKKXN8KC5ljjcU7xIL5m
KhtIOYJHkA3N2b8shIywTwYxir5Wwtcp439sbOrntV09gn7SGENtxZ0ux9eNKlIj
lWyTIUUqLJ7NlSoyKlcPwQVAXufshmip0lC7qSxX3nEUcsgiZDYlG+QNtPMMNzBG
FXpOpsskn2wnoGyKSS4FVcQATlGZEPZMJEWF2Uqwranfao8tBwjOVRaLZIzJ0CKC
bTMU2RRnd5xdqTSXQDnKCimxxAbumlYbmKqkdGge+1J85VzsTL1VSppvk/LZuRYY
8DkFmGJV2l4rk3Mu5f3dqH3DmvbEw29rc+N3u7rwnsRC5BAJ7imddOnUdVPfp/X9
B7dGtJ6dun3PrdwhLc7Zhduft3DesvDxZ0sctfa/WqSL5/8hMXqfhURhtTD7VKnq
p1j/Otev/hr99QZ79I+5LdlUBOIihtU02IDM72/+Ar1q4iA=

Sjablonen in scraper-instellingen

Voorbeeld van substitutie van een willekeurige user-agent

Instellen van vooraf gedefinieerde macro's

In A-Parser kunt u sjabloonmacro's en vooraf ingestelde variabelen configureren die globaal beschikbaar zijn voor alle sjablonen; u kunt globale macro's opgeven in Settings -> Advanced Settings.

Standaard bevat dit al een definitie van het object $datefile, dat wordt gebruikt voor de tijdnotatie van de resultaatbestandsnaam.

Een macro toevoegen en gebruiken

In dit voorbeeld wordt het instellen van een globale variabele getoond. Dit kan handig zijn als u bijvoorbeeld dezelfde cookies wilt gebruiken in meerdere Instagram-scrapers.

Voorbeeld van instelling:

Sjabloon
waarschuwing

Let op de syntaxis van de sluitende accolade van de sjabloon -%]. Dit is nodig om de regeleinde te verwijderen, anders wordt er bij het gebruik van een sjabloon aan het begin een lege regel toegevoegd.

Voorbeeld van gebruik:

Sjabloon