Passer au contenu principal

Utilisation des expressions régulières

Informations générales

Dans A-Parser, on utilise des expressions régulières compatibles Perl/JavaScript, qui peuvent être utilisées :

Une documentation détaillée sur les expressions régulières peut être trouvée dans les sources suivantes :

Dans A-Parser, il est possible de traiter n'importe quel résultat à l'aide d'une expression régulière, pour cela l'option Parse custom result (Utiliser une regex) est utilisée :

Option Utiliser une régulière

Particularités d'utilisation et drapeaux

  • Les expressions régulières sont écrites sans délimiteurs //
  • Les drapeaux suivants sont pris en charge :
    • i - recherche insensible à la casse
    • s - le point inclut tous les caractères, y compris les sauts de ligne
    • g - recherche ou remplacement global

De plus, il est possible de spécifier un drapeau directement dans la regex, par exemple la recherche du mot test dans chaque ligne de tout le texte (ou du code de la page, selon l'endroit où la regex est appliquée) en utilisant le drapeau m (multi-ligne - les symboles ^ et $ fonctionnent respectivement comme début et fin de ligne) :

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

Extraction d'informations arbitraires

Description du travail avec les expressions régulières dans l'éditeur de tâches

À l'aide de l'option Parse custom result (Utiliser une regex) ou du Constructeur de résultats, il est possible d'utiliser des expressions régulières pour extraire des informations arbitraires des résultats de la collecte de données, par exemple du code source HTML des pages ou des résultats déjà préparés

  • Dans Parse result (Appliquer à), on choisit le résultat du scraper, cela peut être un résultat simple ou un tableau
  • L'expression régulière est indiquée sans délimiteurs, suivie de la possibilité de spécifier un drapeau
  • Dans Result type (Type de résultat), on indique le type de résultat - Flat (résultat simple) ou Array (tableau). Si un tableau est choisi comme résultat source ou si le drapeau g de l'expression régulière est utilisé, le résultat sera toujours enregistré dans un tableau. Dans le champ Name (Nom), on indique le nom du tableau
  • Chaque parenthèse capturante de l'expression régulière peut être enregistrée comme un élément distinct, le nom de l'élément est inscrit dans le champ correspondant $1 to, $2 to... - où le chiffre indique le numéro de la parenthèse capturante
  • Dans le champ RegEx (Regex), on peut utiliser le moteur de templates, ce qui permet d'utiliser la requête comme partie de l'expression régulière

Les nouveaux résultats créés peuvent être utilisés lors du formatage des résultats, dans le constructeur de résultats, dans le filtrage et la déduplication des résultats ou dans l'option suivante Parse custom result (Utiliser une regex). Cette option est similaire au constructeur de résultats lors de l'utilisation de RegEx Match

Exemple de collecte de liens d'images à partir du code HTML source

Pour résoudre cette tâche, nous utilisons le scraper Net::HTTPNet::HTTP pour obtenir le code source de la page. Nous appliquons à $data (la page téléchargée) une expression régulière avec les drapeaux isg, le résultat est enregistré dans les éléments src du tableau images. Dans le format de résultat, nous indiquons d'afficher tous les éléments src séparés par un saut de ligne.

À l'issue de la collecte de données pour la requête http://a-parser.com/, nous obtiendrons la liste suivante dans le fichier de résultat :

/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
Télécharger l'exemple

Comment importer l'exemple dans 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=

Constructeur d'expressions régulières

À partir de la version 1.2.78, le Constructeur d'expressions régulières a été ajouté.

Vous pouvez le trouver dans l'onglet Tools -> Regex Builder. Il est également possible d'envoyer le code des pages obtenu directement depuis le Test de collecte. Pour cela, il faut activer le mode debug et cliquer sur le lien Go to RegEx Builder.

Ouvrir le code de la page dans le constructeur de régulières

Dans le constructeur, il est possible de choisir le langage de programmation dans lequel les expressions régulières obtenues seront utilisées.

Pour travailler avec le constructeur, il faut insérer le texte source dans le champ de gauche (ou il sera inséré automatiquement depuis le Test de collecte lors du passage par Go to Regex Builder). À droite, nous configurons les paramètres de la future expression régulière.

Pour composer une expression régulière simple (par exemple, pour obtenir le titre), il suffit d'indiquer les éléments nécessaires de l'expression régulière.

  • Dans le champ Before group (Avant le groupe), nous inscrivons les caractères qui se trouvent avant l'information dont nous avons besoin
  • Dans le champ After group (Après le groupe), nous inscrivons les caractères qui se trouvent après les données nécessaires
  • Dans le champ Le groupe commence par, nous indiquons les caractères par lesquels la chaîne recherchée doit commencer
  • Dans le champ Group ends with (Le groupe se termine par), nous indiquons les caractères qui doivent se trouver à la fin de la chaîne recherchée
Exemple d'obtention du titre en utilisant le constructeur de régulières

Comme on peut le voir sur la capture d'écran ci-dessus, nous composons une expression régulière qui sélectionnera le title du site. Avant le groupe, nous mettons <title> et après le groupe </title>, et aussi, pour l'exemple, nous indiquons que la chaîne recherchée commence par la lettre W.

Pour un test complet de l'expression régulière obtenue, il est possible d'activer les drapeaux nécessaires : g, s et i.

Il est également possible de composer des expressions régulières plus complexes contenant 2 groupes ou plus. Pour l'exemple, essayons de composer une expression régulière pour collecter tous les liens et ancres dans une liste <li>. Pour cela, nous devons activer le drapeau g et ajouter un autre groupe de recherche, car le premier groupe contiendra les liens et le second les ancres.

Exemple d'utilisation de groupes dans le constructeur de régulières

En définissant les paramètres nécessaires pour les deux groupes, nous obtenons l'expression régulière :

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

Pour vérifier l'expression régulière, appuyez sur le bouton Test :

Vérification de la régulière créée dans le constructeur de régulières

Après l'exécution de l'expression régulière, le résultat de son travail s'affiche en bas : la chaîne complète et les groupes capturés. En double-cliquant sur n'importe quel élément du tableau de résultat, le texte initial défile jusqu'à l'emplacement de cette correspondance.