Ga naar de hoofdinhoud

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:

Optie Filter in de Taak-editor

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

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::HTTPNet::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:

Voorbeeld van filtering op tekst op de pagina

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::ImagesSE::Google::Images, bewaar alleen de afbeeldingen die groter zijn dan 500x500 pixels:

Voorbeeld van het filteren van afbeeldingen op grootte

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=
opmerking

Houd er rekening mee dat bij reguliere expressies bepaalde tekens moeten worden ge-escaped

Voorbeeld van het filteren van afbeeldingen op grootte

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:

Voorbeeld van het gebruik van een zoekopdracht in het filter