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 abilitata 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