Zum Hauptinhalt springen

Ergebnisfilter

In A-Parser gibt es die Möglichkeit, Ergebnisse nach einem Satz bestimmter Regeln zu filtern und nur die erforderlichen Daten im Ergebnis zu speichern.

Verwendung der Filterung

Grundlegende Anwendungsszenarien:

  • Speichern nur der Links, die ein bestimmtes Vorkommen einer Zeichenfolge enthalten (z. B. ein CMS-Merkmal)
  • Filtern einer Domain-Datenbank nach bestimmten Parametern (z. B. Yandex IKS ab 300, Sprache RU)
  • Überprüfung der Antwort vom Server (z. B. 200 OK oder das Vorhandensein bestimmter Header)
  • Überprüfung, ob die ursprüngliche Abfrage im Snippet enthalten ist
  • Alle anderen Anwendungsfälle, bei denen Ergebnisse nach bestimmten Bedingungen eingeschränkt werden müssen

Filter können im Task-Editor hinzugefügt werden, indem Sie auf das Werkzeug-Icon neben dem entsprechenden Parser klicken:

Option Filter im Task-Editor

Typen der Filterung

Es können sowohl einzelne Ergebnisse als auch Ergebnis-Arrays gefiltert werden. Es gibt verschiedene Filtertypen:

  • Nach Gleichheit oder Ungleichheit von Zeichenfolgen
  • Nach Vorhandensein oder Fehlen eines Teilstrings
  • Nach Übereinstimmung oder Nichtübereinstimmung mit einem regulären Ausdruck
  • Numerische Werte können nach größer, kleiner und Gleichheit gefiltert werden

Besonderheiten der Arbeitsweise

  • Beim Filtern von Ergebnis-Arrays verbleiben im Array nur die Ergebnisse, die dem Filter entsprechen
  • Beim Filtern von einfachen Ergebnissen wird, wenn das Ergebnis nicht dem Filter entspricht, das Ergebnis für diese Abfrage vollständig übersprungen, auch bei Verwendung mehrerer Scraper
  • Bei Verwendung von zwei oder mehr Filtern in einer Aufgabe wird zwischen ihnen ein logisches UND angewendet; mit anderen Worten, das Ergebnis wird nur gespeichert, wenn es alle Filterbedingungen gleichzeitig erfüllt
  • Beim Vergleich im Feld zur Angabe des Wertes (Zeichenfolge, regulärer Ausdruck oder numerischer Wert) kann die Template Toolkit Engine verwendet werden; es stehen alle Variablen zur Verfügung, die auch für das Allgemeine Ergebnisformat verfügbar sind

Beispiele

Filterung nach Text auf der Seite

Überprüfung einer Website-Datenbank auf das Vorhandensein eines bestimmten Textes auf der Seite
Als Abfragen verwenden wir eine Datei mit Links, als Ergebnis erhalten wir eine gefilterte Datei mit Links, bei denen der gesuchte Text vorkommt.

Wir verwenden den Parser Net::HTTPNet::HTTP, um die gewünschte Seite herunterzuladen, und speichern die Abfrage (den geprüften Link) im Ergebnis. Wir filtern das Ergebnis $data - den Inhalt der heruntergeladenen Seite, stellen den Filtertyp auf Enthält Zeichenfolge ein und geben die Zeichenfolge selbst an:

Beispiel für die Filterung nach Text auf der Seite

Filterung von Bildern nach Größe

Filterung von Bildern nach Auflösung
Wir filtern die Höhe und Breite des Bildes bei der Datenerfassung über SE::Google::ImagesSE::Google::Images und speichern nur die Bilder, die größer als 500x500 Pixel sind:

Beispiel für die Filterung von Bildern nach Größe

Filterung nach mehreren Merkmalen

Filterung von Links nach dem Vorkommen einer von mehreren verschiedenen Zeichenfolgen
Um Links nach mehreren verschiedenen Zeichenfolgen zu filtern, nutzen wir die Möglichkeit, reguläre Ausdrücke anzugeben; dazu schreiben wir mehrere Merkmale durch ein Trennzeichen getrennt:

showthread\.php
/forum/
viewtopic\.php\?t=
Hinweis

Beachten Sie, dass reguläre Ausdrücke das Maskieren einer Reihe von Zeichen erfordern

Beispiel für die Filterung nach mehreren Kriterien

Verwendung der Abfrage im Filter

Speichern von Google-Snippets, die die ursprüngliche Abfrage enthalten
Als Vergleichszeichenfolge geben wir explizit [% query %] an – die Variable, die die Abfrage enthält, und wählen Groß-/Kleinschreibung beachten, um nach dem Teilstring unter Berücksichtigung der Groß- und Kleinschreibung zu suchen:

Beispiel für die Verwendung einer Abfrage im Filter