Formatering av frågor
Query format (Frågeformat) - gör det möjligt att lägga till ersättningar och formatera frågan till önskat utseende med hjälp av mallar, tillämpas för varje fråga.
Frågeformat

- Frågeformat för den 1:a scrapern
- Frågeformat för den 2:a scrapern
- Allmänt frågeformat
Det finns 2 sätt att ange en mall:
- Allmänt frågeformat, det bearbetas först och stöder ersättningar
- Frågeformat för varje scraper - gör det möjligt att ange ett specifikt format för enskilda scrapers
Låt oss titta på exemplet i skärmdumpen, anta att vi som frågor använder en fil med en lista över domäner av detta slag:
google.com
a-parser.com
yandex.ru
Allmänt frågeformat är angivet som:
http://$query
Före varje ursprunglig fråga (domän) kommer strängen http:// att infogas, frågan kommer att omvandlas google.com -> http://google.com
Frågeformatet för den 1:a scrapern förblev oförändrat, den kommer att skrapa frågan http://google.com
Frågeformatet för den 2:a scrapern ser ut enligt följande:
site:$query
Frågan för denna scraper kommer att omvandlas: http://google.com -> site:http://google.com
Mallar i frågor
I frågeformatet stöds mallmotorn Template Toolkit fullt ut, som variabler finns tillgängliga:
$query- frågan efter formatering via det allmänna resultatformatet$query.num- frågans ordningsnummer$query.lvl- frågans kapslingsnivå vid användning av alternativen Parse to level eller Parse all results$query.orig- den ursprungliga frågan före formatering$query.first- den första frågan vid användning av alternativen Parse to level eller Parse all results$query.prev- visar frågan som fanns på föregående nivå, fungerar för
HTML::LinkExtractor, $tools.query.add och JS-scrapers this.query.add- Alla variabler skapade via Frågebyggaren
Makron för ersättningar
Allmänt frågeformat stöder följande makron:
| Makro | Beskrivning | Exempel |
|---|---|---|
| {az:START:END} | Ersättning av en alfanumerisk sekvens. Istället för START anges början på sekvensen, istället för END - slutet. Längden på END måste vara större än eller lika med längden på START. Tecknen i slutet av sekvensen END måste vara efter (i alfabetisk ordning) tecknen i början av sekvensen START. Alla UTF-8 teckensekvenser kan användas | {az:a:z} - ersättning av alla tecken från a till z (a, b, c, ..., x, z). {az:aaa:zzz} - ersättning av alla tecken från aaa till zzz (aaa, aab, aac, ..., zzx, zzz). {az:a:zz} - ersättning av alla tecken från a till zz (a, b, c, ... aa, ab, ..., zx, zz). {az:00:99} - ersättning av alla tal från 00 till 99 (00, 01, 02, ..., 98, 99). {az:а:яяя} - ersättning av alla kyrilliska tecken från а till яяя (а, б, ... аа, аб, ... яяю, яяя) |
| {each:WORD1,WORD2,...} | Ersättning av angivna ord WORD1, WORD2 osv., obegränsad längd | {each:green,blue,red,black} - ersättning av orden green, blue, red, black. {each:,buy,sell} - ersättning av ett tomt ord, sedan buy och sell |
| {subs:NAME} | Ersättning av ytterligare ord från filer i mappen queries/subs/. Istället för NAME måste filnamnet anges, utan filtillägget .txt | {subs:zones} - ersättning av alla rader från filen queries/subs/zones.txt |
| {num:START:END} | Makrot itererar över tal i det angivna intervallet. Istället för START anges början på intervallet, istället för END - slutet. Decimaltal stöds. | {num:1:1000} - ersättning av alla tal från 1 till 1000 (1, 2, 3 ..., 999, 1000) |
| {num:START:END:STEP} | Makrot itererar över tal i det angivna intervallet, med ett angivet steg. Istället för START anges början på intervallet, istället för END - slutet, istället för STEP - steget. Decimaltal stöds. | {num:0:1000:10} - ersättning av alla tal från 0 till 1000 med steg 10 (0, 10, 20 ..., 990, 1000) |
| {num:END:START} | Makrot itererar över tal i det angivna intervallet i omvänd ordning. Istället för END anges slutet på intervallet, START anger början på intervallet. Decimaltal stöds. | {num:1000:1} - ersättning av alla tal från 1000 till 1 (1000, 999, 998, ..., 2, 1) |
| {num:END:START:STEP} | Makrot itererar över tal i det angivna intervallet i omvänd ordning, med ett angivet steg. Istället för END anges slutet på intervallet, START anger början på intervallet, istället för STEP - steget. Decimaltal stöds. | {num:1000:1:10} - ersättning av alla tal från 1000 till 1 med steg 10 (1000, 990, 980, ..., 10, 1) |
⏩ Video: Makron för ersättningar
I den här videon gås följande igenom:
- makrot
{num}i exempel på sidnavigering och genomgång av koordinater i scrapern
Maps::Google - makrot
{az}med exempel på dataskrapning med inurl: för att öka antalet frågor och därmed resultat - makrot
{each}med exempel på dataskrapning av förslag för att generera ordkombinationer
Kombinera makron för ersättningar
Makron för ersättningar kan kombineras. Komplext exempel:
$query site:{subs:zones} {az:aa:zz}
Anta att en av frågorna för dataskrapning var viagra, och i filen queries/subs/zones.txt finns följande lista över zoner: com, net, org, då kommer följande uppsättning kombinationer att skickas för dataskrapning:
viagra site:com ab
...
viagra site:net jj
...
viagra site:eek.rg zz
Det totala antalet frågor kommer att motsvara multiplikationen av de möjliga kombinationerna:
1 fråga (viagra) x 3 zoner ({subs:zones}) x 676 teckenvariationer ({az:aa:zz}) = 2028 frågor