Presentación y formateo de resultados
Formatos disponibles para guardar resultados
Para formatear los resultados en A-Parser se utiliza el motor de plantillas Template Toolkit, lo que permite guardar fácilmente los resultados de la extracción de datos en diversos formatos:
- En archivos de texto como lista: un resultado por línea, mediante un separador, en formato arbitrario
- En archivos
CSVcon posibilidad de importación posterior en Excel, Google Docs, etc. - En
XML,JSONy otros formatos de almacenamiento de datos - En
HTMLgenerando páginas "al vuelo" - En formato de volcados
SQLpara importación directa a una base de datos o escribiendo directamente en la BD SQLite - En formato binario para guardar imágenes (
jpg, png, gif,...), documentos (pdf, docx,...), archivos ejecutables y archivos comprimidos (exe, dmg, zip,...) y cualquier otro tipo de datos
Edición del formato de resultado
Result format (Formato de resultado) - permite formatear los resultados al aspecto deseado utilizando plantillas, se aplica para cada combinación de consulta-resultados.

- El formato de resultado general se establece en el campo
Result format - El formato de resultado para cada extractor por separado se puede establecer en la configuración del extractor en
Result format
A-Parser admite el trabajo con varios extractores en una sola tarea; en el formato de resultados general es necesario indicar de qué extractor se debe mostrar el resultado:
$p1- resultados del primer extractor (
SE::Google en la captura de pantalla), $p2- resultados del segundo extractor (
SE::Bing en la captura de pantalla)- El número de orden del extractor se muestra a la izquierda del campo de selección del extractor
$p1.presety$p2.presetimplican que es necesario tomar el valor del formato de resultado de la configuración de los extractores correspondientes- En este ejemplo,
$p1.presetse puede reemplazar por$p1.serp.format('$link\n'), lo que tendrá el mismo efecto, y en ese caso ya no se utilizará el formato de resultado de la configuración
Result format (El formato de resultado) se puede indicar en un cómodo editor multilínea haciendo clic en el icono correspondiente en el campo de edición:

En el formato de resultados general están disponibles las siguientes variables:
$query- consulta después del formateo$query.*- todas las variables relacionadas con la consulta, descritas en el artículo Plantillas en consultas$p1, $p2, ...- variables para acceder a los resultados de la extracción de datos para cada extractor por separado (Ver posibles resultados para cada extractor)$p1.query, $p2.query, ...- consultas después del formateo teniendo en cuenta el formato de consulta indicado en la configuración de cada extractor
Texto inicial y final
Para cada archivo de resultados se indica un Texto inicial/final por separado:
- Para formar el encabezado de un archivo CSV
- Para las etiquetas iniciales y finales de un archivo XML
- Para el header, encabezado y footer de archivos HTML
- Para cualquier otra variante de aplicación
Para activar esta posibilidad es necesario hacer clic en el botón More options (Más opciones) en la parte inferior del Editor de tareas

En el texto inicial y final se admite el uso del motor de plantillas Template Toolkit, variables disponibles:
$query- consulta después del formateo$query.*- todas las variables relacionadas con la consulta, descritas en el artículo Plantillas en consultas
¡Importante! Estas variables solo están disponibles al guardar cada consulta en un archivo separado o al usar estas mismas variables en el Formato del nombre del archivo de resultado.
Formato del nombre del archivo de resultados
A-Parser permite utilizar plantillas también en los nombres de los archivos resultantes, lo que permite crear automáticamente archivos y carpetas basados en la fecha actual, por el número de orden de la consulta, por la propia consulta y en cualquier otro formato.

En el campo File name (Nombre de archivo) se admiten las siguientes variables:
- Todas las variables disponibles para el Formato de resultado general
$queriesfile- ruta y nombre del archivo con las consultas; si las consultas se indican a través del formulario, contendrá queries_from_text.txt$datefile- objeto del complemento date del motor de plantillas Template Toolkit, configurado para el formato de fecha%b-%d_%H-%M-%S; al formatear devuelve la hora y fecha actuales en forma de May-08_20-08-38, el formato se puede cambiar en la Configuración adicional
Por defecto, el nombre del archivo se crea según la fecha y hora en el momento de inicio de la tarea
Ejemplo complejo
reports/$queriesfile/${query}.txt
- Se creará la carpeta reports
- Se creará una subcarpeta con el nombre del archivo de consultas
- En la subcarpeta se crearán tantos archivos como consultas se utilicen en la tarea; como nombre de archivo se utilizará la propia consulta con la extensión
.txt
La variable $query se escribe en formato ${query} para evitar la interpolación de la extensión .txt como parte de la variable; más detalles en la documentación sobre el motor de plantillas Template Toolkit
⏩ Video. Nombramiento de archivos de resultados
En este video presentamos varios ejemplos de nombramiento del archivo de resultado:
- Numeración del archivo de resultado de acuerdo con las consultas.
- Numeración del archivo de resultado + parte del nombre de la consulta.
- Nombramiento del archivo de resultado por la consulta, si la consulta es un enlace.
Ver resultados disponibles
Cada extractor tiene su propio conjunto de resultados; se puede ver la lista de resultados disponibles pasando el puntero sobre el extractor; en la sugerencia emergente se mostrará la lista de resultados simples y matrices, con la lista de elementos anidados:

Marcados en amarillo están los resultados comunes para todos los extractores:
$query- consulta pasada al extractor después del formateo$query.orig- consulta original (tal como estaba en el archivo o en el campo de entrada de consultas)$query.first- primera consulta al usar opciones de extracción de datos anidada (Parse all results o Parse to level)$info.success- información sobre el éxito de la extracción de datos de esta consulta$info.retries- cantidad de intentos utilizados para esta consulta$info.stats- estadísticas del trabajo del extractor para esta consulta$pages.$i.data- matriz con las respuestas sin procesar del servidor para la posibilidad de extraer información adicional de forma independiente
SE::Bing:$totalcount- cantidad de resultados de la entrega$adscon los elementos$link,$anchor,$visiblelink,$snippet,$positiony$page- matriz con la lista de anuncios$related.$i.key- matriz con la lista de palabras clave relacionadas$serpcon los elementos$link,$anchor,$snippet,$cache- matriz con la entrega principal del buscador
Tenga en cuenta que para las matrices se indica explícitamente la variable $i, lo que significa que hay varios elementos y se puede acceder a ellos por índice (número de posición) o recorrer cada elemento en un ciclo.
El resultado $pages.$i.data se cambiará automáticamente a $data para aquellos extractores que no "navegan por páginas" dentro de una sola consulta. Por ejemplo, como
DeepL::Translator.
Representación de resultados
A-Parser fue creado para la extracción de datos de cualquier tipo; para ello se introdujeron 2 tipos de resultados:
- Resultados simples (Flat)
- Matrices de resultados (Array)
Consideremos cada tipo usando como ejemplo el extractor
SE::Google, captura de pantalla de los resultados:

Resultados simples
Resultados simples - cuando a una consulta le corresponde un solo resultado, ejemplos:
- Cantidad de resultados por consulta ($totalcount)
- Si la consulta es un error tipográfico ($misspell, no representado en la captura de pantalla)
Otros ejemplos:
- El valor del texto traducido ($translated) en el extractor
DeepL::Translator - El número de dominios de referencia ($domains), el valor de confianza ($trustflow), enlaces de retroceso ($backlinks), etc., en el extractor
Rank::MajesticSEO
Los resultados individuales se guardan en variables comunes (prefijo $ + nombre en caracteres latinos)
Matrices de resultados
Matrices de resultados - cuando a una consulta le corresponde una lista de resultados, cada elemento de la lista a su vez puede contener varios elementos anidados. Analicemos el ejemplo de la entrega de Google: está representada en el extractor por la matriz $serp; para mayor claridad utilizaremos una tabla, anotaremos los primeros 5 resultados de la entrega:
| Enlace ($link) | Ancla ($anchor) | Fragmento ($snippet) |
|---|---|---|
| http://www.speedtest.net/ | Speedtest.net by Ookla - The Global Broadband Speed Test | Test your Internet connection bandwidth to locations around the world with this interactive broadband speed test from Ookla. |
| http://en.wikipedia.org/wiki/Test_cricket | Test cricket - Wikipedia, the free encyclopedia | Test cricket is the longest form of the sport of cricket. Test matches are played between national representative teams with "Test status", as determined by the ... |
| http://www.speakeasy.net/speedtest/ | Speakeasy Speed Test | Saturday 03-May 2014, 11:04:29 AM Your IP: The Speakeasy Speed Test requires Flash v7 or higher. Please update your browser. See Pricing Or Call Today |
| http://www.humanmetrics.com/cgi-win/jtypes2.asp | Personality test based on C. Jung and I. Briggs Myers type theory | Humanmetrics Jung Typology Test™ instrument uses methodology, questionnaire, scoring and software that are proprietary to Humanmetrics, and shall not be ... |
| http://test-ipv6.com/ | Test your IPv6. | This will test your browser and connection for IPv6 readiness, as well as show you your current IPV4 and IPv6 address. ... Test your IPv6 connectivity. JavaScript ... |
Cada posición de la entrega se anota en una matriz con 3 elementos anidados: enlace ($link), ancla ($anchor), fragmento ($snippet)
Otro ejemplo: la lista de palabras clave relacionadas, que se guarda en la matriz $related:
| Palabra clave($key) |
|---|
| test wwe |
| depression test |
| test my speed |
| wonderlic test |
| test personality |
| act test |
| jiggle test |
| bipolar test |
Como se puede ver, en esta matriz hay un solo elemento anidado: palabra clave ($key)
La numeración de los elementos de las matrices comienza desde 0, ejemplo de acceso a elementos individuales de la matriz:
$serp.0.link- primer enlace de la entrega$serp.3.anchor- cuarta ancla de la entrega$related.0.key- primera palabra clave relacionada
Más adelante se describirá con más detalle el formateo de resultados simples y matrices
Principios de formateo
Una vez que el extractor ha recopilado los datos en resultados simples y matrices, es necesario mostrarlos (guardarlos en un archivo) en el formato requerido. Para mayor comodidad y funcionalidad, A-Parser utiliza el motor de plantillas Template Toolkit. Analicemos las construcciones utilizadas con frecuencia; para ello, utilizaremos la herramienta Prueba de plantillas. Seleccionemos un proyecto para el extractor
SE::Google:

En la captura de pantalla se presentan 3 campos:
- JSON - representación interna de los datos en el extractor
- Template - plantilla según la cual se realiza el formateo del resultado
- Result - directamente los datos transformados según la plantilla indicada; en esta forma el resultado se escribirá en el archivo
Cambiando la plantilla podemos cambiar el aspecto del resultado, consideremos la siguiente plantilla:

Texto en el campo Template (Plantilla):
Informe por consulta: $query
Competencia: $totalcount
Lista de enlaces, anclas y fragmentos:
$serp.format('$link $anchor\n$snippet\n\n')
Destaquemos las reglas principales:
- El texto normal se muestra en el resultado tal cual, sin cambios
- Para mostrar resultados simples es necesario mostrar en el lugar deseado la variable que contiene el resultado necesario con el prefijo
$ - Para formatear matrices se utiliza el método
.format, sobre el cual hablaremos un poco más abajo \nse encarga del salto de línea
Formateo de matrices
Analicemos la construcción:
$serp.format('$link $anchor\n$snippet\n\n')
Esta anotación significa que para la matriz $serp es necesario llamar al método .format con el parámetro '$link $anchor\n$snippet\n\n'. El método .format une en una cadena todos los elementos de la matriz según la plantilla indicada en el parámetro; la plantilla misma significa: para cada elemento de la matriz $serp mostrar el enlace y el ancla separados por un espacio, luego en una nueva línea mostrar el fragmento, después de lo cual van otros dos saltos de línea, formando en el resultado una línea vacía entre los resultados.
Uso del motor de plantillas
Salida de variables
Para usar el motor de plantillas es necesario insertar las etiquetas [% %], y dentro de las etiquetas introducir la lógica que se debe ejecutar.


Recorrido de una matriz
Para mostrar los elementos de una matriz se debe usar la construcción FOREACH:
[% FOREACH i IN p1.list;
i.cms _ "\n";
END %]
Más información y ejemplos sobre el motor de plantillas en Características del trabajo de las plantillas en A-Parser.
Ejemplos
Salida de competencia
Salida de la competencia por consulta (número de resultados por consulta) para todos los extractores de motores de búsqueda (
SE::Google,
SE::Yandex...).
Formato de resultado:
$query: $totalcount\n
Ejemplo de resultado:
test: 3910000000
viagra: 278000000
ventanas pvc: 3220000
...
Extracción de enlaces
Salida de enlaces de la entrega de los motores de búsqueda.
Formato de resultado:
$serp.format('$link\n')
Ejemplo de resultado:
http://www.speedtest.net/
http://www.speakeasy.net/speedtest/
http://en.wikipedia.org/wiki/Test_cricket
http://www.humanmetrics.com/cgi-win/jtypes2.asp
http://html5test.com/
http://test-ipv6.com/
...
Extracción de sugerencias
Salida de sugerencias de los motores de búsqueda.
Formato de resultado:
$results.format('$suggest\n')
Ejemplo de resultado:
servidor de prueba tanques online
pruebas gia de lengua rusa
receta de masa para panqueques
testículo
masa para pizza con leche
Salida de datos sobre la consulta
En
Net::HTTP y extractores basados en él, está disponible adicionalmente la salida de:
$proxy- proxy en el que se ejecutó la consulta$headers- encabezados de la respuesta$code- código de respuesta$reason- estado de la respuesta

Salida de valores de variables en JSON
Salida de todos los redireccionamientos de la consulta
Para esta tarea está disponible la variable $response, que permite obtener cualquier variable de la consulta, incluyendo todos los redireccionamientos anteriores.
Formato de resultado:
$response.Redirects.format('$URI\n--> ')$response.URI
Resultado del trabajo del extractor:

Salida en JSON utilizando el motor de plantillas para registrar la fecha
El ejemplo muestra la salida de los resultados del extractor
Net::Whois en formato JSON.

Como resultado se obtendrá el dominio que se comprobó, la fecha en el momento de la comprobación y el resultado de la comprobación. Como se ve en el Formato de resultado, la fecha se obtiene mediante el motor de plantillas Template Toolkit.
Formato de resultado:
{
"domain": "$query",
"date": "[% USE d = date(format = '%d.%m.20%y', locale = 'C');d.format() %]",
"expire": "$p1.expire_date",
},
Ejemplo de resultado:
[{
"domain": "a-parser.com",
"date": "05.05.2021",
"expire": "25.02.2022",
},
{}]
Descargar ejemplo
Como importar un ejemplo en A-Parser
eJxtVG1v2jAQ/ivWCUQrZaxM2pdM+0BRkTYx6ErRPgQ0efWFeXXszHYYVZT/3nMS
EtruQyTf23P33EtK8Nw9uluLDr2DOCkhr98QwxJ9HP/4baRj79jNkWe5QjaBCHJu
HdrgnZw5kUFgygvlYbeLgFDo6ebGZjyglVvNGNuCMBmXegsxvQd/C7RPW4hONu6x
sSRDtlnfMME+s6C8SGsYkkZDMR5m4w9Xw6dRxJR54FQUqWejy09i3LhdXLLhrkfF
Yy5tizvIJ+NG/tkkI6eKPugKXvMD3hsqOJUKe/WcpCXPkAyDEBmsXbqxP3py5UJI
L43mqmEdOtR3YqMl0aV4bcg3MJfo5tZkfa66HaeOJW17gCCKOvZ7EwNxypXDCByV
OucUKl5bpEfLvbGrPNRD+hKMniq1wAOq3q3Gvy6kEjTOaUpBX9rA/7us3mBUHb3z
VAe0/yzVALG3BYHUwvXqWx8kzMLsibj4RbSVzKQn2c1MocOuXJHyETHvWrYMLcuM
xS5LA9zmpvXNUQtyTPqJTfNWV1Y7eEXkxWBeKh+MTuV+RRSsFHjyLPQ93clKz0y4
gsBMF0rRYBze9Qsyde0ggtC18E3wrE4R2Lf3EoE3Rrmva9KF+7KSFvBjKDCjXp5n
bSFp69XmbnFugbOlqrMnJ/F9c3Ku3tLAkNZ3b2ixiFq16865+weU50cdlxWN64+7
bZwCdK2MgDrkaBYQT6pnHsF5pA==
Comprobación de un sitio para su presencia en Google Noticias por palabra clave

Formato de resultado:
[% linksToOneString = p1.serp.format('$link. ');
matches = linksToOneString.match('.+?(' _ p1.query.domain _ ').+?');
IF matches.0;
p1.query.orig _';yes' _ "\n";
ELSE;
p1.query.orig _';no' _ "\n";
END %]
Ejemplo de resultado:
extractor google|a-parser.com;no
extractor google|forbes.ru;yes
Descargar ejemplo
Como importar un ejemplo en A-Parser
eJylVVFv2jAQ/iuR1YpWo1EQ7UuqaaIMpk6stKV9AoRccqQeju3aCQVR/vvOTkjS
ruNlEoq4u+++O9+dz1uSUrM0txoMpIaE4y1R7j8JyagXhj+kjDl4Z173GeZLL5IJ
ZcLDX2EQ8Go8WNNEcSBNoqg2oC3PuOaOhggWNOMpaW5JulGA7HIFWrPIGlmEsqIx
zGUmEENWlGeIae3+DccwqkIS8WrIATRnYmkUumCQGn9wwCXmNfr7x0Psz3Wozg4m
omtQTkU8O4xXWq43GlLNwNQ8W0EQkN102iTYLKyr6UudUNu08fFEuNM+yKGAETqK
2PvqqZZvK+YvHO6kcWQxvtc4vZwIVMyfwSDqo6PvTCcN/8u3k4Y3sywvGeiNX8zB
DAnQ5lg+CTvzJmSCFuLM132viOQHqCi5pGYIbVxuwDTeufQGo95nQCE/4G6+T8Tx
lJTFGNEVPEgsxoK54dvXCKUbmtj6HUU0BWvdF+TUT9d28mgUsZRJQXleUTvKVZUf
BXvJx00i1maFbelrmaAqBUfgUt13Y0yOnEyQInO+d7kPCReUG2gSg6n2KSYSlZZU
Z2hgKWiaSj1UNh1Ub4kUHc4HsAJe+Tv6q4zxCK9dZ4FO14Xj55DhXxy78nT1UDiG
rxpzKFmcdDX8VXlFciBjPHj0hMfmLGEpyqbrrnBIAlQuAVRZshtbskRqKMMUzEV0
XEEKhJ35qmMdVaneHcMtKiMzPbfUeY2b+ztk3PSNFGe2IQZwKeUFIW8WJG1f9i75
IJPprmpyLQYq51IsWDwsruV+HDLxgGtzKLrSLj5bJpFxjk02cF8NW8cUTbVCdd6P
zl0XwlZyvyQxScnNz1F+cqUZ5nxhE0ywMfWoBeWccv54P6hbSDWgKEyy4Ly9cN/A
fs/zb8tpLnKN54S2E9rV//bTGz3L97o/lwneuf/iwvv2hBsAt55NO4VYYh9sN939
CUkvf0vssoO1oiKCKL8SO9ej4oEp36tt/ZkJtzucy9/mNgfZqlsI6rB9BofOPil/
AGn6WSM=
Salida de valor timestamp en formato de fecha
A veces sucede que no hay una fecha normal en los resultados, pero hay un valor de marca de tiempo (timestamp) como en el extractor
Social::Instagram::Tag. Este valor se puede representar en formato de fecha utilizando el motor de plantillas Template-Toolkit.

Formato de resultado:
[% USE date;
query.orig _ ": total posts - " _ postscount _ "\nPosts:\n";
FOREACH i IN posts;
d = date.format(i.time, format => '%d.%m.20%y');
i.link _ " - " _ d _ ":\n";
i.text _ "\n";
END %]
Ejemplo de resultado:
sport: total posts - 96500663
Posts:
https://www.instagram.com/p/COfJHshAkeD/ - 05.05.2021:
Quelques exemples de notre nouvelle campagne de communication personnalisable avec le nom des clubs 😀
Vous préférez quel visuel : 1, 2, 3, 4, 5 ? 🤔
#clubnormand #tennis #padel #beachtennis #tenniscourt #padelcourt #beachtenniscourt #lnt #LigueNormandieTennis #🎾 #sport #normandie #normandietourisme
https://www.instagram.com/p/COfJG7olavg/ - 05.05.2021:
💥 Sau màn lật đổ “Bà già” thành công, Nửa xanh thành Milan chính thức vượt qua Nửa đỏ về số lần lên đỉnh nước Ý nhiều nhất lịch sử.
-----------------------------
➖ Website: https://webthethao247.com/
➖ https://g.page/webthethao247?share
#wtt247 #webthethao247 #thethao #sport #bongda #SerieA #InterMilan #Juventus #ACMilan
https://www.instagram.com/p/COfJG1Hg7ax/ - 05.05.2021:
Which Skill was better 1 or 2? 🤔👇
Follow @ftb4ll for more 💥
Follow @ftb4ll for more 💥
Follow @ftb4ll for more 💥
________________________________________
Leave a Like 👍🏽
Subscribe for more 🔔
Leave your thoughts in the Comments 💬
________________________________________
❌Ignore the Tags ❌
#football #soccer #fussball #futbol #fifa #championsleague #bundesliga #ucl #footballmemes #goal #transfer #sports #penalty #ultimateteam #pacybits #fut #ultras #laliga #freekick #referee #sport #calcio #messi #ronaldo #skills #premierleague #foul #footballseason
https://www.instagram.com/p/COfIlXqhfAa/ - 05.05.2021:
Be Fuckin’ Ready 🤣🤣🤣
Get ready to fly!!!! 🏐🏐🏐🏐
Follow - @crackonkings
#beachball #nalin&kane #trance #music #90s #onyerhead #festival #party #afterparty #love #summer #uk #happy #sesh #crackon #football #sport #festivaloutfit #festivalfashion #sun #dj #dancing #club #festivalgirl #house #techno #rave
...
Descargar ejemplo
Como importar un ejemplo en A-Parser
eJx1VNtuGjEQ/RXLCkoj0VVSqS9bpRKhoFJRNuXyxKLKxQa58dqO7aVBiH/vjPeW
pM0+7RzPzDlzsU80MP/g753wIniark/Uxn+a0oXZSqbSdKJ9YHvHijRdsj15T5ay
EAAVlgRDOAuCiCewlKB9apnzwmGm9RsJwImLHStVoP0TDUcrgMschHOSYwbJwd4Z
V7AASqIbPTBVotu6R1aLUeT8lOtcP5bCHRPj5J78JDlNQVBgiljjgwehOQU4GltT
6hB98lzfI5LCT05jlnE2Hw2GX4kkk1nljnDg5DYyJZWYdzIJUHifVCa5/Uwuezzp
FcmH697x8gpiCHwyUVI/RKpGAa/ENYSVVxBPraAIj2ZfSG9Dz5tNn1aF+3Fkgrov
7E1Sz6U9XLCDWBrslYydb2LAmrECu3WB6vG0qeAqCU+YgXEugzSaqYoBx9WxrrR8
jN3WBnyxxVL4sTMFQKi6Bo+NujW9iDaFFGWM/VHF0HTHlBd96kHqmIEQ/vpEBuFY
MC6zqAfwEzV6oNRUHITq3GL+u1IqDrs12EHQpA78v0v2T45zW95zKti6Pw40tFmi
dZd976K4mZo9VM5/Qd1KFjKA7Ye4T4BeA/gghG17NsOeFcaJlqbOXLPDTbNC44p3
IxvYDnpRxouxvAS3Ru/kPquvTeNZ6iVc50wPDV5HrEuXSsFYvJh36zHw9RjQ6AS+
Dh5GCiy9ua40GKP8t0Ul1ToJ6/cRBRbQyeesdcotU2o1nz4/wUAfjM30yLlX44uL
Qb01Drm2sLx7A2sFpZ037cvSPlWnt96X9HSGuf3291UAFonugEG3PAyFpjfnvwdy
t1Y=