Abfrageformatierung
Query format (Abfrageformat) - ermöglicht das Hinzufügen von Ersetzungen und das Formatieren der Abfrage in die gewünschte Form mithilfe von Vorlagen; wird für jede Abfrage angewendet.
Abfrageformate

- Abfrageformat für den 1. Parser
- Abfrageformat für den 2. Parser
- Allgemeines Abfrageformat
Es gibt 2 Möglichkeiten, eine Vorlage anzugeben:
- Allgemeines Abfrageformat: Dieses wird zuerst verarbeitet und unterstützt Ersetzungen
- Abfrageformat für jeden Parser: Ermöglicht die Festlegung eines spezifischen Formats für einzelne Scraper
Betrachten wir das Beispiel auf dem Screenshot. Angenommen, wir verwenden als Abfragen eine Datei mit einer Liste von Domains in dieser Form:
google.com
a-parser.com
yandex.ru
Das allgemeine Abfrageformat ist wie folgt festgelegt:
http://$query
Vor jeder ursprünglichen Abfrage (Domain) wird die Zeichenfolge http:// eingefügt, die Abfrage wird umgewandelt: google.com -> http://google.com
Das Abfrageformat für den 1. Parser blieb unverändert, er wird die Abfrage http://google.com verarbeiten.
Das Abfrageformat für den 2. Parser sieht folgendermaßen aus:
site:$query
Die Abfrage für diesen Parser wird umgewandelt: http://google.com -> site:http://google.com
Vorlagen in Abfragen
Im Abfrageformat wird die Template Toolkit-Engine vollständig unterstützt. Als Variablen stehen zur Verfügung:
$query- Abfrage nach der Formatierung durch das allgemeine Ergebnisformat$query.num- Laufende Nummer der Abfrage$query.lvl- Verschachtelungsebene der Abfrage bei Verwendung der Optionen Bis zur Ebene extrahieren / Parse to level oder Alle Ergebnisse extrahieren / Parse all results$query.orig- Ursprüngliche Abfrage vor der Formatierung$query.first- Die erste Abfrage bei Verwendung der Optionen Bis zur Ebene extrahieren / Parse to level oder Alle Ergebnisse extrahieren / Parse all results$query.prev- zeigt die Abfrage an, die auf der vorherigen Ebene war, funktioniert für
HTML::LinkExtractor, $tools.query.add und JS-Parser this.query.add- Alle Variablen, die über den Abfrage-Builder erstellt wurden
Ersetzungs-Makros
Das Allgemeine Abfrageformat unterstützt die folgenden Makros:
| Makro | Beschreibung | Beispiele |
|---|---|---|
| {az:START:END} | Einsetzen einer alphanumerischen Sequenz. Anstelle von START wird der Anfang der Sequenz angegeben, anstelle von END das Ende. Die Länge von END muss größer oder gleich der Länge von START sein. Die Zeichen am Ende der Sequenz END müssen (in alphabetischer Reihenfolge) nach den Zeichen am Anfang der Sequenz START stehen. Es können beliebige UTF-8-Zeichensequenzen verwendet werden. | {az:a:z} - Einsetzen aller Zeichen von a bis z (a, b, c, ..., x, z). {az:aaa:zzz} - Einsetzen aller Zeichen von aaa bis zzz (aaa, aab, aac, ..., zzx, zzz). {az:a:zz} - Einsetzen aller Zeichen von a bis zz (a, b, c, ... aa, ab, ..., zx, zz). {az:00:99} - Einsetzen aller Zahlen von 00 bis 99 (00, 01, 02, ..., 98, 99). {az:а:яяя} - Einsetzen aller kyrillischen Zeichen von а bis яяя (а, б, ... аа, аб, ... яяю, яяя) |
| {each:WORD1,WORD2,...} | Einsetzen der angegebenen Wörter WORD1, WORD2 usw., die Länge ist unbegrenzt. | {each:green,blue,red,black} - Einsetzen der Wörter green, blue, red, black. {each:,buy,sell} - Einsetzen eines leeren Wortes, dann buy und sell |
| {subs:NAME} | Einsetzen zusätzlicher Wörter aus Dateien im Ordner queries/subs/. Anstelle von NAME muss der Dateiname ohne die Erweiterung .txt angegeben werden. | {subs:zones} - Einsetzen aller Zeilen aus der Datei queries/subs/zones.txt |
| {num:START:END} | Das Makro iteriert über Zahlen im angegebenen Bereich. Anstelle von START wird der Anfang des Intervalls angegeben, anstelle von END das Ende. Dezimalzahlen werden unterstützt. | {num:1:1000} - Einsetzen aller Zahlen von 1 bis 1000 (1, 2, 3 ..., 999, 1000) |
| {num:START:END:STEP} | Das Makro iteriert über Zahlen im angegebenen Bereich mit einer angegebenen Schrittweite. Anstelle von START wird der Anfang des Intervalls angegeben, anstelle von END das Ende, anstelle von STEP die Schrittweite. Dezimalzahlen werden unterstützt. | {num:0:1000:10} - Einsetzen aller Zahlen von 0 bis 1000 mit Schrittweite 10 (0, 10, 20 ..., 990, 1000) |
| {num:END:START} | Das Makro iteriert über Zahlen im angegebenen Bereich in umgekehrter Reihenfolge. Anstelle von END wird das Ende des Intervalls angegeben, START gibt den Anfang des Intervalls an. Dezimalzahlen werden unterstützt. | {num:1000:1} - Einsetzen aller Zahlen von 1000 bis 1 (1000, 999, 998, ..., 2, 1) |
| {num:END:START:STEP} | Das Makro iteriert über Zahlen im angegebenen Bereich in umgekehrter Reihenfolge mit einer angegebenen Schrittweite. Anstelle von END wird das Ende des Intervalls angegeben, START gibt den Anfang des Intervalls an, anstelle von STEP die Schrittweite. Dezimalzahlen werden unterstützt. | {num:1000:1:10} - Einsetzen aller Zahlen von 1000 bis 1 mit Schrittweite 10 (1000, 990, 980, ..., 10, 1) |
⏩ Video: Ersetzungs-Makros
In diesem Video wird behandelt:
- Makro
{num}in Beispielen für das Durchblättern von Seiten und das Iterieren von Koordinaten im Parser
Maps::Google - das Makro
{az}am Beispiel der Datenerfassung mit inurl: zur Erhöhung der Anzahl der Abfragen und entsprechend der Ergebnisse - das Makro
{each}am Beispiel der Datenerfassung von Vorschlägen zur Generierung von Wortkombinationen
Kombinieren von Ersetzungs-Makros
Ersetzungs-Makros können kombiniert werden. Komplexes Beispiel:
$query site:{subs:zones} {az:aa:zz}
Angenommen, eine der Abfragen für die Datenerfassung war viagra, und in der Datei queries/subs/zones.txt befindet sich die folgende Liste von Zonen: com, net, org. Dann wird der folgende Satz von Kombinationen zur Datenerfassung übergeben:
viagra site:com ab
...
viagra site:net jj
...
viagra site:eek.rg zz
Die Gesamtzahl der Abfragen entspricht der Multiplikation der möglichen Kombinationen:
1 Abfrage (viagra) x 3 Zonen ({subs:zones}) x 676 Zeichenvariationen ({az:aa:zz}) = 2028 Abfragen