Ir al contenido principal

Características del funcionamiento de las plantillas en A-Parser

Pruebas de plantillas

Para la depuración y prueba de plantillas en A-Parser, existe una herramienta especial: Pruebas de plantillas

Método .format para arreglos

En A-Parser, la mayoría de los resultados se presentan en forma de matrices con elementos anidados. En términos técnicos, los resultados se presentan como una matriz de hashes, donde cada hash tiene claves fijas. Analicemos esto con el ejemplo del extractor SE::GoogleSE::Google, en los resultados contiene una matriz $serp con los elementos $link, $anchor y $snippet (entre otros):

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

Para recorrer y mostrar datos de este tipo de arreglos de manera conveniente, se creó el método .format, que permite unir todos los elementos del arreglo según un formato específico, por ejemplo, todos los enlaces separados por un salto de línea:

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

Lo que resultará en el guardado de cada enlace en una línea nueva:

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

Salida de 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;...

Enlaces, anclas y snippets simultáneamente:

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

En el formato también se puede utilizar la consulta original (u otras variables disponibles), lo que permite establecer una correspondencia entre la consulta y cada elemento del arreglo:

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

Método .json para objetos

Como es sabido, todos los datos en A-Parser se representan en forma de variables. Existe un método de serialización (conversión al tipo String) de dichos datos al formato JSON: .json. Por ejemplo:

$results.json
Ejemplo

Bandera de plantilla estática en el Nombre del archivo de resultado

La bandera isStaticTemplate() permite hacer que una plantilla dinámica en el Nombre del archivo de resultado sea estática. Principio de funcionamiento: al usar esta bandera en el Nombre del archivo de resultado, la plantilla se ejecutará una sola vez al iniciar la tarea y, por lo tanto, se considerará estática. Esto permite nombrar los archivos de forma más flexible y, al mismo tiempo, mantener la posibilidad de obtener enlaces a ellos a través del método de la API getTaskResultsFile.

Ejemplo de uso:

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

Variables disponibles

Al formatear consultas

Al formatear resultados

Al formar el nombre del archivo de resultados

Al filtrar resultados

Interpolación de variables

Por defecto, las plantillas se escriben entre las etiquetas [% y %], todo lo que esté fuera de las etiquetas es texto normal que se pasará al resultado tal cual. En A-Parser se ha incluido adicionalmente la interpolación de variables, lo que permite referirse a las variables en el texto mediante el símbolo $. Además, también se interpola \n como un salto de línea explícito.

Ejemplo:

Total de resultados para la consulta $query: $totalcount\n

En el lugar de $query y $totalcount se insertarán los valores de las variables correspondientes, y \n se reemplazará por un salto de línea. Escritura equivalente sin usar interpolación:

Total de resultados para la consulta [% query %]: [% totalcount; "\n" %]
nota

Tenga en cuenta que en las plantillas de Template Toolkit las variables se escriben sin el prefijo $.

Casos de uso de plantillas

Formateo de consultas

Ejemplo

En este ejemplo, a cada dominio del archivo Alexa top500.txt se le añadirá el operador de búsqueda site: y, tras un espacio, se añadirán las sustituciones del archivo words.txt.

Formateo de resultados

Plantilla en formato de resultado

En este ejemplo se mostrará la consulta, la cantidad de resultados en la emisión y la cantidad de palabras clave relacionadas. También se mostrará la lista de anclas recopiladas.

Plantillas al filtrar resultados

Plantilla al filtrar resultados

Para poder definir una plantilla, debe seleccionar Custom Template en la lista desplegable.
En este ejemplo, como resultado solo se mostrarán aquellas consultas para las cuales se hayan recopilado menos de 5 resultados.

Plantillas al usar la opción Usar expresión regular

Plantilla al usar expresiones regulares

En este ejemplo, el extractor recopilará oraciones que contengan la palabra pasada como segundo argumento de la consulta. El algoritmo de trabajo es el siguiente: la consulta se divide mediante el Constructor de consultas por el delimitador especificado en enlace y palabra; el extractor accede al enlace, selecciona el texto; la palabra de la consulta se inserta en la expresión regular y con ella se recopilan las oraciones.

Descargar ejemplo

Cómo importar el ejemplo en 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=

Plantillas en la configuración de los extractores

Ejemplo de sustitución de user-agent aleatorio

Configuración de macros preestablecidas

En A-Parser se pueden configurar macros de plantillas y variables preestablecidas que estarán disponibles globalmente para todas las plantillas; puede especificar macros globales en Settings (Configuración) -> Additional settings (Configuración adicional).

Por defecto, ya contiene la predefinición del objeto $datefile, que se utiliza para formatear la hora en el nombre del archivo de resultado.

Adición y uso de una macro

En este ejemplo se muestra la configuración de una variable global. Esto puede ser útil, por ejemplo, si es necesario utilizar las mismas cookies en varios extractores de Instagram.

Ejemplo de configuración:

Plantilla
advertencia

Preste atención a la sintaxis de la etiqueta de cierre de la plantilla -%]. Esto es necesario para eliminar el salto de línea; de lo contrario, al usar cualquier plantilla, se añadirá una línea vacía al principio.

Ejemplo de uso:

Plantilla