Ir al contenido principal

Uso de expresiones regulares

Información general

En A-Parser se aplican expresiones regulares compatibles con Perl/JavaScript, que se pueden utilizar:

Puede encontrar documentación detallada sobre expresiones regulares en las siguientes fuentes:

En A-Parser existe la posibilidad de procesar cualquier resultado mediante una expresión regular; para ello se utiliza la opción Parse custom result (Usar expresión regular):

Opción Usar expresión regular

Particularidades de uso y banderas

  • Las expresiones regulares se escriben sin delimitadores //
  • Se admiten las siguientes banderas:
    • i - búsqueda sin distinguir entre mayúsculas y minúsculas
    • s - el punto incluye todos los caracteres, incluidos los saltos de línea
    • g - búsqueda global o reemplazo

Adicionalmente, es posible indicar una bandera dentro de la propia expresión regular, por ejemplo, buscar la palabra test en cada línea de todo el texto (o del código de la página, dependiendo de a qué se aplique la expresión regular) utilizando la bandera m (multilínea - los símbolos ^ y $ funcionan como inicio y fin de línea respectivamente):

(?m)^(.+?test.+?)$

Extracción de información arbitraria

Descripción del trabajo con expresiones regulares en el editor de tareas

Mediante la opción Parse custom result (Usar expresión regular) o el Constructor de resultados, es posible utilizar expresiones regulares para extraer información arbitraria de los resultados de la extracción de datos, por ejemplo, del código fuente HTML de las páginas o de resultados ya preparados.

  • En Parse result (Aplicar a), se selecciona el resultado del extractor; puede ser un resultado simple o un array
  • La expresión regular se indica sin delimitadores, seguida de la posibilidad de indicar una bandera
  • En Result type (Tipo de resultado), se indica el tipo de resultado: Flat (resultado simple) o Array (matriz). Si se selecciona un array como resultado de origen o se utiliza el indicador g de la expresión regular, el resultado siempre se guardará en un array. En el campo Name (Nombre), se indica el nombre del array
  • Cada paréntesis de captura de la expresión regular puede guardarse como un elemento individual; el nombre del elemento se escribe en el campo correspondiente $1 to, $2 to... donde el número indica el número del paréntesis de captura
  • En el campo RegEx (Expresión regular), se puede utilizar el motor de plantillas, lo que permite usar la consulta como parte de la expresión regular

Los nuevos resultados creados se pueden utilizar al formatear resultados, en el constructor de resultados, en el filtrado y la deduplicación de resultados, o en la siguiente opción Parse custom result (Usar expresión regular). Esta opción es similar al constructor de resultados cuando se utiliza RegEx Match

Ejemplo de extracción de enlaces a imágenes desde el código HTML fuente

Para resolver esta tarea, utilizamos el extractor Net::HTTPNet::HTTP para obtener el código fuente de la página. Aplicamos a $data (página descargada) una expresión regular con las banderas isg, guardamos el resultado en los elementos src de la matriz images. En el formato de resultado, indicamos que se muestren todos los elementos src separados por un salto de línea.

Como resultado de la extracción de datos para la consulta http://a-parser.com/, obtendremos la siguiente lista en el archivo de resultados:

/img/lang/en.png  
/img/lang/ru.png
img/[email protected]
https://files.a-parser.com/img/site/tour_ru/V1qpV.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_1_all_parsers_list.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_1_quick_task.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_2_task_editor_easy.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_3_task_editor_analyze_domains.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_4_task_editor_parse_emails.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_5_queue_fast_google.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_6_queue_spyserp.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_7_javascript_parser.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_8_scheduler.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_9_settings.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_10_proxies.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_11_templates.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_12_task_tester.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_13_parser_test.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_14_api.png
https://files.a-parser.com/img/site/tour_ru/tour_ru_15_resources.png
data/avatars/s/0/12.jpg?1507557563
data/avatars/s/0/12.jpg?1507557563
data/avatars/s/13/13392.jpg?1570706020
data/avatars/s/16/16560.jpg?1586782475
data/avatars/s/1/1240.jpg?1537376153
styles/uix/xenforo/avatars/avatar_s.png
data/avatars/s/0/371.jpg?1412969226
styles/uix/xenforo/avatars/avatar_s.png
//mc.yandex.ru/watch/26891250
Descargar ejemplo

Cómo importar un ejemplo en A-Parser


eJxtVN9v2jAQ/l8sJArqYH3YS7Stokhomxgwmj5BJlnkyLz612yHFUX533d2Egfa
vYDv7rvvvvNdXBFH7bPdGLDgLEl2FdHhTBKSw5GW3JFboqmxYHx4R1bgkuRLmm7Q
HxEVcWcNmHMorVNiC7ZJNM0BuaijwS7gBc2PTBS7n5+zsTWH/d6OP/mf3XBPspvJ
+H4UTh08bZiZLSJh66LG0DM6w/+KigATtAAbkV4zwSIkq3uR6gTGsBwQxXK0j8oI
6kwn+kR56WGDhmvShG+GgyBWDkekzrJYYBGiHq7vJu3dxeAjPUGqfAnGoXcv0Gr1
DvBmwEe7MqOJe/EMNM+ZY0pS3lTwnfRVnyT7E0RKhVg8GgZ2YZRAl4NA4J3nTt2O
DIJNkKIMuT+aHJIcKbdwSyxKXVAUkr+OMAeGOmXW2utBf0WUnHG+hBPwHhb4H0rG
c1yV2RGTvraJ/4es33DUsb3LUjisvwY1RJZgPay/91m5WqqiuwzOBHNo27kqpR/M
e3Q+A+h4ZysPE8pALNMyt9Xxa9Ag/Wb0I5vp3nXVxtVYrp0HJY+sWLfb1iFLmeIn
t5ZzJTQH35csOcexWNj26zGz7Ri80Qt8nTwPJa4+VqcUt98eG6naMFy/D16gwJu8
rNpSHijnT9vlZYT0K4XGL+e0TaZT+q55BiYHJabEJzooFK4UtlVn8ZGIT0l18VQk
VY1j+m03Dcb35BHow8uxOAOS3NX/AFJvlP8=

Constructor de expresiones regulares

A partir de la versión 1.2.78 se añadió el Constructor de expresiones regulares.

Puede encontrarlo en la pestaña Tools -> Regex Builder. También puede enviar el código de página obtenido directamente en la Extracción de prueba. Para ello, debe activar el modo debug y hacer clic en el enlace Go to RegEx Builder.

Abrir el código de la página en el constructor de expresiones regulares

En el constructor existe la posibilidad de elegir el lenguaje de programación en el que se utilizarán las expresiones regulares obtenidas.

Para trabajar con el constructor, debe pegar el texto de origen en el campo de la izquierda (o se insertará automáticamente desde la Extracción de prueba al navegar mediante Go to Regex Builder). A la derecha, configuramos los parámetros de la futura expresión regular.

Para componer una expresión regular sencilla (por ejemplo, para obtener el título), basta con indicar los elementos necesarios de la expresión regular.

  • En el campo Before group (Antes del grupo), introducimos los caracteres que se encuentran antes de la información que necesitamos
  • En el campo After group (Después del grupo), introducimos los caracteres que se encuentran después de los datos necesarios
  • En el campo El grupo comienza con, indicamos los caracteres con los que debe comenzar la cadena buscada
  • En el campo Group ends with (El grupo termina con), indicamos los caracteres que deben estar al final de la cadena buscada
Ejemplo de obtención del título utilizando el constructor de expresiones regulares

Como se ve en la captura de pantalla anterior, estamos componiendo una expresión regular que seleccionará el title del sitio. Antes del grupo pondremos <title> y después del grupo </title>, y también, como ejemplo, indicaremos que la cadena buscada comienza con la letra W.

Para una prueba completa de la expresión regular obtenida, existe la posibilidad de activar las banderas necesarias: g, s e i.

También se pueden componer expresiones regulares más complejas que contengan 2 o más grupos. Como ejemplo, intentemos componer una expresión regular para recopilar todos los enlaces y anclajes en una lista <li>. Para ello, necesitamos activar la bandera g y añadir otro grupo de búsqueda, ya que en el primer grupo estarán los enlaces y en el segundo los anclajes.

Ejemplo de uso de grupos en el constructor de expresiones regulares

Tras establecer los parámetros necesarios para ambos grupos, obtenemos la expresión regular:

<li><a href="(.+?)">(.+?)<\/a

Para comprobar la expresión regular, pulse el botón Prueba:

Verificación de la expresión regular creada en el constructor de expresiones regulares

Tras ejecutar la expresión regular, en la parte inferior se muestra el resultado de su funcionamiento: la cadena completa y los grupos capturados. Al hacer doble clic en cualquier elemento de la tabla de resultados, el texto inicial se desplaza hasta la ubicación de dicha coincidencia.