Ga naar de hoofdinhoud

Gebruik van reguliere expressies

Algemene informatie

In A-Parser worden Perl/JavaScript-compatibele reguliere expressies toegepast, die kunnen worden gebruikt:

Gedetailleerde documentatie over reguliere expressies is te vinden in de volgende bronnen:

In A-Parser is het mogelijk om elk resultaat te verwerken met behulp van een reguliere expressie, hiervoor wordt de optie Parse custom results (Gebruik regex) gebruikt:

Optie Gebruik regex

Gebruikskenmerken en vlaggen

  • Reguliere expressies worden genoteerd zonder de delimiters //
  • De volgende vlaggen worden ondersteund:
    • i - zoeken zonder onderscheid tussen hoofdletters en kleine letters
    • s - de punt omvat alle tekens, inclusief regeleinden
    • g - globaal zoeken of vervangen

Bovendien is het mogelijk om een vlag in de reguliere expressie zelf op te geven, bijvoorbeeld het zoeken naar het woord test in elke regel van de volledige tekst (of paginacode, afhankelijk van waarop de regex wordt toegepast) met gebruik van de vlag m (multi line - de tekens ^ en $ werken respectievelijk als begin en einde van de regel):

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

Extractie van willekeurige informatie

Beschrijving van het werken met reguliere expressies in de taakeditor

Met behulp van de optie Parse custom results (Gebruik regex) of de Results builder is het mogelijk om reguliere expressies te gebruiken voor de extractie van willekeurige informatie uit de resultaten van de gegevensextractie, bijvoorbeeld uit de HTML-broncode van pagina's of uit reeds voorbereide resultaten

  • Bij Parse result (Toepassen op) wordt het resultaat van de scraper gekozen, dit kan een eenvoudig resultaat of een array zijn
  • De reguliere expressie wordt opgegeven zonder delimiters, gevolgd door de mogelijkheid om een vlag op te geven
  • Bij Result type (Resultaat type) wordt het type resultaat aangegeven - Flat (eenvoudig resultaat) of Array (array). Als er een array als bronresultaat is gekozen of de vlag g van de reguliere expressie wordt gebruikt, wordt het resultaat altijd in een array opgeslagen. In het veld Name (Naam) wordt de naam van de array opgegeven
  • Elke capture group (haakjes) van de reguliere expressie kan als een apart element worden opgeslagen, de naam van het element wordt genoteerd in het overeenkomstige veld $1 to, $2 to... - waarbij het cijfer het nummer van de capture group aangeeft
  • In het veld RegEx (Regex) kan de template engine worden gebruikt, waardoor de zoekopdracht als onderdeel van de reguliere expressie kan worden gebruikt

De nieuw gemaakte resultaten kunnen worden gebruikt bij de resultaatopmaak, in de results builder, bij de filtering en deduplicatie van resultaten of in de volgende optie Parse custom results (Gebruik regex). Deze optie is vergelijkbaar met de results builder bij gebruik van RegEx Match

Voorbeeld van het scrapen van afbeeldingslinks uit de HTML-broncode

Om deze taak op te lossen, gebruiken we de scraper Net::HTTPNet::HTTP om de broncode van de pagina op te halen. We passen op $data (de gedownloade pagina) een reguliere expressie toe met de vlaggen isg, en slaan het resultaat op in de elementen src van de array images. In het resultaatformaat geven we aan dat alle src elementen gescheiden door een regeleinde moeten worden weergegeven.

Als resultaat van de gegevensextractie voor de query http://a-parser.com/ krijgen we in het resultaatbestand de volgende lijst:

/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
Voorbeeld downloaden

Hoe een voorbeeld in A-Parser te importeren


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=

Reguliere expressie constructor

Vanaf versie 1.2.78 is de Reguliere expressie constructor toegevoegd.

Deze is te vinden op het tabblad Tools -> Regex Builder. Ook is het mogelijk om de verkregen paginacode direct te verzenden vanuit de Test parsing. Hiervoor moet de debug-modus worden ingeschakeld en op de link Go to RegEx Builder worden geklikt.

Paginacode openen in de reguliere expressie constructor

In de constructor is het mogelijk om de programmeertaal te kiezen waarin de verkregen reguliere expressies zullen worden gebruikt.

Om met de constructor te werken, moet in het linker veld de brontekst worden geplakt (of deze wordt automatisch geplakt vanuit de Test parsing bij de overgang naar Go to Regex Builder). Rechts configureren we de parameters van de toekomstige reguliere expressie.

Voor het samenstellen van een eenvoudige reguliere expressie (bijvoorbeeld voor het verkrijgen van de title) is het voldoende om de benodigde elementen van de reguliere expressie op te geven.

  • In het veld Before group (Vóór groep) vullen we de tekens in die zich vóór de informatie bevinden die we nodig hebben
  • In het veld After group (Na groep) vullen we de tekens in die zich na de benodigde gegevens bevinden
  • In het veld Groep begint met geven we de tekens op waarmee de gezochte regel moet beginnen
  • In het veld Group ends with (Groep eindigt met) geven we de tekens op die aan het einde van de gezochte regel moeten staan
Voorbeeld van het verkrijgen van een title met de reguliere expressie constructor

Zoals te zien is in de bovenstaande schermafbeelding, stellen we een reguliere expressie samen die de title van de site selecteert. Vóór de groep plaatsen we <title> en na de groep </title>, en als voorbeeld geven we aan dat de gezochte regel begint met de letter W.

Voor een volledige test van de verkregen reguliere expressie is het mogelijk om de benodigde vlaggen in te schakelen: g, s en i.

Ook kunnen er complexere reguliere expressies worden samengesteld met 2 of meer groepen. Laten we als voorbeeld proberen een reguliere expressie samen te stellen voor het verzamelen van alle links en ankers in een lijst <li>. Hiervoor moeten we de vlag g inschakelen en nog een zoekgroep toevoegen, aangezien de eerste groep de links zal bevatten en de tweede de ankers.

Voorbeeld van het gebruik van groepen in de reguliere expressie constructor

Na het instellen van de benodigde parameters voor beide groepen, krijgen we de reguliere expressie:

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

Om de reguliere expressie te controleren, klikt u op de knop Test:

Controle van de gemaakte regex in de reguliere expressie constructor

Na het uitvoeren van de reguliere expressie wordt onderaan het resultaat van de werking weergegeven: de volledige regel en de vastgelegde groepen. Bij een dubbelklik op een element in de resultaat-tabel scrolt de brontekst naar de locatie van deze overeenkomst.