Vai al contenuto principale

Caratteristiche del funzionamento dei modelli in A-Parser

Test dei modelli

Per il debug e il test dei modelli in A-Parser esiste uno strumento speciale: Test dei modelli

Metodo .format per gli array

In A-Parser la maggior parte dei risultati è rappresentata sotto forma di array con elementi annidati. In termini tecnici, i risultati sono rappresentati come un array di hash, in cui ogni hash ha chiavi fisse. Analizziamolo con l'esempio dello scraper SE::GoogleSE::Google: nei risultati contiene un array $serp con gli elementi $link, $anchor e $snippet (e altri):

"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;..."
}
]

Per scorrere e visualizzare comodamente i dati da un tale array, è stato creato il metodo .format che consente di unire tutti gli elementi dell'array secondo un formato specifico, ad esempio tutti i link separati da un a capo:

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

Il risultato salverà ogni link in una nuova riga:

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

Output degli snippet:

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

Link, anchor e snippet contemporaneamente:

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

Nel formato è possibile utilizzare anche la query originale (o altre variabili disponibili), il che consente di impostare una corrispondenza query - ogni elemento dell'array:

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

Metodo .json per gli oggetti

Come è noto, tutti i dati in A-Parser sono rappresentati sotto forma di variabili. Esiste un metodo di serializzazione (conversione al tipo String) di tali dati in formato JSON: .json. Ad esempio:

$results.json
Esempio

Flag del modello statico nel Nome del file dei risultati

Il flag isStaticTemplate() consente di rendere statico un modello dinamico nel Nome del file dei risultati. Principio di funzionamento: utilizzando questo flag nel Nome del file dei risultati, il modello verrà eseguito una sola volta all'avvio dell'attività e sarà quindi considerato statico. Ciò consentirà di nominare i file in modo più flessibile mantenendo la possibilità di ottenere i link ad essi tramite il metodo API getTaskResultsFile.

Esempio di utilizzo:

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

Variabili disponibili

Durante la formattazione delle query

Durante la formattazione dei risultati

Durante la generazione del nome del file dei risultati

Durante il filtraggio dei risultati

Interpolazione delle variabili

Per impostazione predefinita, i modelli vengono scritti tra i tag [% e %], tutto ciò che è al di fuori dei tag è testo normale che verrà passato nel risultato così com'è. In A-Parser è inoltre inclusa l' interpolazione delle variabili, che consente di fare riferimento alle variabili nel testo tramite il simbolo $. Inoltre, viene interpolato anche \n come interruzione di riga esplicita.

Esempio:

Risultati totali per la query $query: $totalcount\n

Al posto di $query e $totalcount verranno inseriti i valori delle variabili corrispondenti, \n verrà sostituito da un a capo. Scrittura equivalente senza l'uso dell'interpolazione:

Risultati totali per la query [% query %]: [% totalcount; "\n" %]
nota

Si noti che nei modelli Template Toolkit le variabili vengono scritte senza il prefisso $.

Casi d'uso dei modelli

Formattazione delle query

Esempio

In questo esempio, a ogni dominio dal file Alexa top500.txt verrà aggiunto l'operatore di ricerca site: e, separati da uno spazio, verranno aggiunte le sostituzioni dal file words.txt.

Formattazione dei risultati

Modello nel formato del risultato

In questo esempio verranno visualizzati la query, il numero di risultati nella SERP e il numero di parole chiave correlate. Verrà inoltre visualizzato l'elenco delle anchor raccolte.

Modelli nel filtraggio dei risultati

Modello nel filtraggio dei risultati

Per poter impostare un modello, selezionare Custom Template dall'elenco a discesa.
In questo esempio, verranno visualizzate come risultato solo le query per le quali sono stati raccolti meno di 5 risultati.

Modelli con l'opzione Usa regex

Modello con l'uso di regex

In questo esempio, lo scraper raccoglierà le frasi che contengono la parola passata come secondo argomento della query. L'algoritmo di funzionamento è questo: la query viene divisa dal Costruttore di query secondo il delimitatore specificato in link e parola; lo scraper visita il link, seleziona il testo; la parola dalla query viene inserita nell'espressione regolare e con essa vengono raccolte le frasi.

Scarica esempio

Come importare l'esempio 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=

Modelli nelle impostazioni degli scraper

Esempio di sostituzione di uno user-agent casuale

Configurazione dei macro predefiniti

In A-Parser è possibile configurare macro di modelli e variabili predefinite che saranno disponibili globalmente per tutti i modelli; è possibile specificare le macro globali in Settings -> Advanced Settings.

Per impostazione predefinita, contiene già la predefinizione dell'oggetto $datefile, utilizzato per la formattazione dell'ora per il nome del file dei risultati.

Aggiunta e utilizzo di una macro

In questo esempio viene mostrata l'impostazione di una variabile globale. Questo può essere utile, ad esempio, se è necessario utilizzare gli stessi cookie in diversi scraper di Instagram.

Esempio di impostazione:

Modello
avvertimento

Prestare attenzione alla sintassi della parentesi di chiusura del modello -%]. Questo è necessario per rimuovere l'interruzione di riga, altrimenti utilizzando qualsiasi modello verrà aggiunta una riga vuota all'inizio.

Esempio di utilizzo:

Modello