Resultaatfilters
In A-Parser bestaat de mogelijkheid om resultaten te filteren op basis van een set specifieke regels en alleen de benodigde gegevens in het resultaat op te slaan.
Gebruik van filtering
Belangrijkste toepassingen:
- Alleen links opslaan die een bepaalde tekenreeks bevatten (bijvoorbeeld een CMS-kenmerk)
- Een database met domeinen filteren op specifieke parameters (bijvoorbeeld Yandex TIC vanaf 300, taal RU)
- Het antwoord van de server controleren (bijvoorbeeld 200 OK of de aanwezigheid van specifieke headers)
- Controleren of de oorspronkelijke zoekopdracht in het snippet voorkomt
- Alle andere toepassingen waarbij het nodig is om resultaten te beperken op basis van bepaalde voorwaarden
Filters kunnen worden toegevoegd in de Taak-editor door op het gereedschapspictogram naast de betreffende scraper te klikken:

Typen filtering
U kunt zowel individuele resultaten als arrays van resultaten filteren. Er zijn verschillende typen filters:
- Op gelijkheid of ongelijkheid van tekenreeksen
- Op aanwezigheid of afwezigheid van een subtekenreeks
- Op overeenkomst of geen overeenkomst met een reguliere expressie
- Numerieke waarden kunnen worden gefilterd op groter dan, kleiner dan en gelijkheid
Zie ook: Resultaten weergeven
Kenmerken van de werking
- Bij het filteren van arrays van resultaten blijven alleen de resultaten die aan het filter voldoen in de array staan
- Bij het filteren van eenvoudige resultaten wordt, als het resultaat niet aan het filter voldoet, het resultaat voor deze zoekopdracht in zijn geheel overgeslagen, ook bij het gebruik van meerdere scrapers
- Bij het gebruik van twee of meer filters in een taak wordt de logische EN toegepast; met andere woorden, het resultaat wordt alleen opgeslagen als het tegelijkertijd aan de voorwaarden van alle filters voldoet
- Bij het vergelijken in het veld voor de waarde (tekenreeks, reguliere expressie of numerieke waarde) kan de Template Toolkit-sjabloon-engine worden gebruikt; alle variabelen die beschikbaar zijn voor het Algemeen resultaatformaat zijn toegankelijk
Voorbeelden
Filteren op tekst op de pagina
Een database met sites controleren op de aanwezigheid van specifieke tekst op de pagina
Als zoekopdrachten gebruiken we een bestand met links; het resultaat is een gefilterd bestand met links waarop de gezochte tekst voorkomt.
We gebruiken scraper
Net::HTTP om de gezochte pagina te downloaden, en slaan in het resultaat de aanvraag op (de link die we controleren). We filteren het resultaat $data - de inhoud van de gedownloade pagina, stellen het filtertype Contain string in en geven de tekenreeks zelf op:

Filteren van afbeeldingen op grootte
Afbeeldingen filteren op resolutie
Filter de hoogte en breedte van de afbeelding bij het uitvoeren van gegevensextractie via
SE::Google::Images, bewaar alleen de afbeeldingen die groter zijn dan 500x500 pixels:

Filteren op meerdere kenmerken
Links filteren op de aanwezigheid van een van de verschillende tekenreeksen
Om links te filteren op meerdere verschillende tekenreeksen maken we gebruik van de mogelijkheid om reguliere expressies op te geven; hiervoor noteren we meerdere kenmerken gescheiden door een scheidingsteken:
showthread\.php
/forum/
viewtopic\.php\?t=
Houd er rekening mee dat bij reguliere expressies bepaalde tekens moeten worden ge-escaped

Gebruik van de zoekopdracht in het filter
Google-snippets opslaan die de oorspronkelijke zoekopdracht bevatten
Als tekenreeks voor vergelijking geven we expliciet [% query %] op - de variabele die de zoekopdracht bevat, en we selecteren Sensitive om de subtekenreeks hoofdlettergevoelig te zoeken:
