Cechy działania szablonów w A-Parser
Testowanie szablonów
Dla odtwarzania i testowania szablonów w A-Parser istnieje specjalne narzędzie: Testowanie szablonów
Metoda .format dla tablic
W A-Parser większość wyników jest przedstawiona w postaci tablic z zagnieżdżonymi elementami. Mówiąc technicznie — wyniki są przedstawione w postaci tablicy hashy, gdzie każdy hash ma stałe klucze. Rozważmy to na przykładzie scrapera
SE::Google, w wynikach zawiera on tablicę $serp z elementami $link, $anchor i $snippet (i innymi):
"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 "<b>Test</b> status", as determined by the ..."
}
]
Dla wygodnego przechodzenia i wyprowadzania danych z takiej tablicy została stworzona metoda .format, która pozwala łączyć wszystkie elementy tablicy według określonego formatu, na przykład wszystkie linki przez znak nowej linii:
$serp.format('$link\n')
Co w rezultacie zapisze każdy link w nowej linii:
http://www.speedtest.net/
http://www.speakeasy.net/speedtest/
http://en.wikipedia.org/wiki/Test_cricket
Wyprowadzanie snippetów:
$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 "<b>Test</b> status", as determined by the ...
Linki, anchory i snippety jednocześnie:
$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 "<b>Test</b> status", as determined by the ...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 "<b>Test</b> status", as determined by the ...
W formacie można również użyć oryginalnego zapytania (lub innych dostępnych zmiennych), co pozwala na ustawienie dopasowania zapytanie - każdy element tablicy:
$serp.format('$query: $link\n')
test: http://www.speedtest.net/
test: http://www.speakeasy.net/speedtest/
test: http://en.wikipedia.org/wiki/Test_cricket
Metoda .json dla obiektów
Jak wiadomo, wszystkie dane w A-Parserze są reprezentowane w postaci zmiennych. Istnieje metoda serializacji (konwersji na typ String) takich danych do formatu JSON: .json. Na przykład:
$results.json

Flaga statycznego szablonu w Nazwie pliku wyniku
Flaga isStaticTemplate() pozwala uczynić dynamiczny szablon w Nazwie pliku wyniku statycznym.
Zasada działania: przy użyciu tej flagi w Nazwie pliku wyniku, szablon zostanie wykonany raz przy starcie zadania i tym samym będzie uważany za statyczny. Pozwala to na bardziej elastyczne nazywanie plików, zachowując jednocześnie możliwość uzyskiwania linków do nich poprzez metodę API getTaskResultsFile.
Przykład użycia:
[% isStaticTemplate(); tools.js.eval('Date.now()') %]
Dostępne zmienne
Przy tworzeniu nazwy pliku wyników
Interpolacja zmiennych
Domyślnie szablony są zapisywane między tagami [% i %], wszystko poza tagami to zwykły tekst, który zostanie przekazany do wyniku w niezmienionej formie.
W A-Parser dodatkowo włączona jest interpolacja zmiennych, co pozwala odwoływać się do zmiennych w tekście poprzez symbol $.
Oprócz tego interpolowane jest również \n jako jawny znak nowej linii.
Przykład:
Wszystkich wyników dla zapytania $query: $totalcount\n
W miejsce $query i $totalcount zostaną podstawione wartości odpowiednich zmiennych, a \n zostanie zastąpione znakiem nowej linii.
Równoważny zapis bez użycia interpolacji:
Wszystkich wyników dla zapytania [% query %]: [% totalcount; "\n" %]
Należy pamiętać, że w szablonach Template Toolkit zmienne zapisuje się bez prefiksu $.
Warianty użycia szablonów
Formatowanie zapytań

W tym przykładzie do każdej domeny z pliku Alexa top500.txt zostanie dodany operator wyszukiwania site: i po spacji zostaną dodane podstawienia z pliku words.txt.
Formatowanie wyników

W tym przykładzie zostanie wyprowadzone zapytanie, liczba wyników w wynikach wyszukiwania oraz liczba powiązanych słów kluczowych. Zostanie również wyprowadzona lista zebranych anchorów.
Szablony przy filtrowaniu wyników

Aby móc zdefiniować szablon, należy wybrać z listy rozwijanej Custom Template.
W tym przykładzie jako wynik zostaną wyprowadzone tylko te zapytania, dla których zebrano mniej niż 5 wyników.
Szablony przy użyciu opcji Użyj wyrażenia regularnego

W tym przykładzie scraper zbierze zdania, które zawierają w sobie słowo przekazane jako drugi argument zapytania. Algorytm działania jest następujący: zapytanie jest dzielone przez Konstruktor zapytań według wskazanego separatora na link i słowo; scraper przechodzi pod link, wybiera tekst; słowo z zapytania jest podstawiane do wyrażenia regularnego i za jego pomocą zbierane są zdania.
Pobierz przykład
Jak zaimportować przykład do 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=
Szablony w ustawieniach scraperów
Przykład podstawienia losowego user-agenta
Konfiguracja predefiniowanych makr
W A-Parser można skonfigurować makra szablonów i predefiniowane zmienne, które będą dostępne globalnie dla wszystkich szablonów. Globalne makra można wskazać w Settings -> Advanced Settings.
Domyślnie znajduje się tam już predefinicja obiektu $datefile, który jest używany do formatowania czasu dla nazwy pliku wyniku.
Dodawanie i używanie makra
W tym przykładzie przedstawiono ustawienie zmiennej globalnej. Może to być przydatne na przykład, jeśli konieczne jest użycie tych samych ciasteczek w kilku scraperach Instagrama.
Przykład ustawienia:

Zwróć uwagę na składnię zamykającego nawiasu szablonu -%]. Jest to potrzebne do usunięcia znaku nowej linii, w przeciwnym razie przy użyciu dowolnego szablonu na początku będzie dodawana pusta linia.
Przykład użycia:
