Zum Hauptinhalt springen

Verwendung von regulären Ausdrücken

Allgemeine Informationen

In A-Parser werden Perl/JavaScript-kompatible reguläre Ausdrücke verwendet, die wie folgt eingesetzt werden können:

  • Bei der Datenerfassung beliebiger Informationen von beliebigen Websites
  • Im Abfrage-Builder zum Extrahieren oder Ersetzen eines Teils der Abfrage
  • Im Ergebnis-Builder zur Transformation beliebiger Ergebnisse
  • Bei der Verwendung von Filtern
  • Im RegEx-Konstruktor
  • Bei der Überprüfung der Verfügbarkeit der nächsten Seite im Parser Net::HTTPNet::HTTP

Detaillierte Dokumentationen zu regulären Ausdrücken finden Sie in den folgenden Quellen:

In A-Parser besteht die Möglichkeit, jedes Ergebnis mithilfe eines regulären Ausdrucks zu verarbeiten. Dazu wird die Option Parse custom result (Regulären Ausdruck verwenden) genutzt:

Option RegEx verwenden

Besonderheiten bei der Verwendung und Flags

  • Reguläre Ausdrücke werden ohne Begrenzer // geschrieben
  • Folgende Flags werden unterstützt:
    • i - Suche ohne Berücksichtigung der Groß-/Kleinschreibung
    • s - Punkt schließt alle Zeichen ein, einschließlich Zeilenumbrüche
    • g - globale Suche oder Ersetzung

Zusätzlich ist es möglich, ein Flag direkt im regulären Ausdruck anzugeben, zum Beispiel die Suche nach dem Wort test in jeder Zeile des gesamten Textes (oder des Seitencodes, je nachdem, worauf der reguläre Ausdruck angewendet wird) unter Verwendung des Flags m (multi line - die Symbole ^ und $ fungieren jeweils als Zeilenanfang und Zeilenende):

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

Extrahieren beliebiger Informationen

Beschreibung der Arbeit mit regulären Ausdrücken im Task-Editor

Mithilfe der Option Parse custom result (Regulären Ausdruck verwenden) oder des Ergebnis-Builders ist es möglich, reguläre Ausdrücke zu verwenden, um beliebige Informationen aus den Ergebnissen der Datenerfassung zu extrahieren, zum Beispiel aus dem HTML-Quellcode von Seiten oder aus bereits aufbereiteten Ergebnissen

  • Unter Parse result (Anwenden auf) wird das Ergebnis des Parsers ausgewählt; dies kann ein einfaches Ergebnis oder ein Array sein
  • Der reguläre Ausdruck wird ohne Begrenzer angegeben, gefolgt von der Möglichkeit, ein Flag anzugeben
  • In Result type (Ergebnistyp) wird der Typ des Ergebnisses angegeben - Flat (einfaches Ergebnis) oder Array (Array). Wenn als Quellresultat ein Array ausgewählt ist oder das Flag g des regulären Ausdrucks verwendet wird, wird das Ergebnis immer in einem Array gespeichert. Im Feld Name wird der Name des Arrays angegeben
  • Jede erfassende Klammer des regulären Ausdrucks kann als separates Element gespeichert werden; der Name des Elements wird in das entsprechende Feld $1 to, $2 to... eingetragen - wobei die Ziffer die Nummer der erfassenden Klammer bezeichnet
  • Im Feld RegEx (Regulärer Ausdruck) kann die Template-Engine verwendet werden, was es ermöglicht, die Abfrage als Teil des regulären Ausdrucks zu nutzen

Die neu erstellten Ergebnisse können bei der Formatierung der Ergebnisse, im Ergebnis-Builder, bei der Filterung und Unique-Prüfung der Ergebnisse oder in der nächsten Option Parse custom result (Regulären Ausdruck verwenden) genutzt werden. Diese Option ähnelt dem Ergebnis-Builder bei Verwendung von RegEx Match

Beispiel für das Parsen von Bildlinks aus dem HTML-Quellcode

Um diese Aufgabe zu lösen, verwenden wir den Parser Net::HTTPNet::HTTP, um den Quellcode der Seite zu erhalten. Wir wenden auf $data (die heruntergeladene Seite) einen regulären Ausdruck mit den Flags isg an und speichern das Ergebnis in den Elementen src des Arrays images. Im Ergebnisformat geben wir an, dass alle src-Elemente durch einen Zeilenumbruch ausgegeben werden sollen.

Als Ergebnis der Datenerfassung für die Abfrage http://a-parser.com/ erhalten wir in der Ergebnisdatei folgende Liste:

/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
Beispiel herunterladen

Wie man ein Beispiel in A-Parser importiert


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=

RegEx-Builder

Ab Version 1.2.78 wurde der RegEx-Builder hinzugefügt.

Sie finden ihn auf dem Tab Tools -> Regex Builder. Zudem kann der erhaltene Seitencode direkt aus dem Test-Parsing gesendet werden. Dazu muss der Debug-Modus aktiviert sein und auf den Link Go to RegEx Builder geklickt werden.

Seitencode im RegEx-Konstruktor öffnen

Im Builder besteht die Möglichkeit, die Programmiersprache auszuwählen, in der die erhaltenen regulären Ausdrücke verwendet werden sollen.

Um mit dem Builder zu arbeiten, muss im linken Feld der Quelltext eingefügt werden (oder er wird automatisch aus dem Test-Parsing beim Wechsel über Go to Regex Builder eingefügt). Rechts werden die Parameter des zukünftigen regulären Ausdrucks konfiguriert.

Um einen einfachen regulären Ausdruck zu erstellen (zum Beispiel zum Abrufen des Titels), reicht es aus, die benötigten Elemente des regulären Ausdrucks anzugeben.

  • Im Feld Before group (Vor der Gruppe) tragen wir die Zeichen ein, die vor der benötigten Information stehen
  • Im Feld After group (Nach der Gruppe) tragen wir die Zeichen ein, die nach den benötigten Daten stehen
  • Im Feld Gruppe beginnt mit geben wir die Zeichen an, mit denen die gesuchte Zeichenfolge beginnen soll
  • Im Feld Group ends with (Gruppe endet mit) geben wir die Zeichen an, die am Ende der gesuchten Zeichenfolge stehen sollen
Beispiel für das Abrufen des Titels mit dem RegEx-Konstruktor

Wie im obigen Screenshot zu sehen ist, erstellen wir einen regulären Ausdruck, der den Title der Website auswählt. Vor der Gruppe setzen wir <title> und nach der Gruppe </title>, und geben zudem beispielhaft an, dass die gesuchte Zeichenfolge mit dem Buchstaben W beginnt.

Für ein vollständiges Testen des erhaltenen regulären Ausdrucks besteht die Möglichkeit, die benötigten Flags zu aktivieren: g, s und i.

Es können auch komplexere reguläre Ausdrücke mit 2 oder mehr Gruppen erstellt werden. Versuchen wir beispielhaft, einen regulären Ausdruck zum Sammeln aller Links und Anker in einer <li>-Liste zu erstellen. Dazu müssen wir das Flag g aktivieren und eine weitere Suchgruppe hinzufügen, da in der ersten Gruppe die Links und in der zweiten die Anker enthalten sein werden.

Beispiel für die Verwendung von Gruppen im RegEx-Konstruktor

Nachdem die erforderlichen Parameter für beide Gruppen festgelegt wurden, erhalten wir den regulären Ausdruck:

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

Um den regulären Ausdruck zu überprüfen, klicken Sie auf die Schaltfläche Test:

Überprüfung des erstellten RegEx im RegEx-Konstruktor

Nach der Ausführung des regulären Ausdrucks wird unten das Ergebnis seiner Arbeit angezeigt: die vollständige Zeile und die erfassten Gruppen. Bei einem Doppelklick auf ein beliebiges Element in der Ergebnistabelle scrollt der Ausgangstext an die Stelle, an der diese Übereinstimmung gefunden wurde.