Przejdź do treści głównej

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::GoogleSE::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 &quot;<b>Test</b> status&quot;, as determined by the&nbsp;..."
}
]

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 &quot;<b>Test</b> status&quot;, as determined by the&nbsp;...

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 &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;...

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
Przykład

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 formatowaniu zapytań

Przy formatowaniu wyników

Przy tworzeniu nazwy pliku wyników

Przy filtrowaniu 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" %]
notatka

Należy pamiętać, że w szablonach Template Toolkit zmienne zapisuje się bez prefiksu $.

Warianty użycia szablonów

Formatowanie zapytań

Przykład

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

Szablon w formacie wyniku

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

Szablon 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

Szablon przy użyciu 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:

Szablon
ostrzeżenie

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:

Szablon