Hoppa till huvudinnehåll

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

Exempel på frågeformat
  1. Frågeformat för den 1:a scrapern
  2. Frågeformat för den 2:a scrapern
  3. 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:

Makron för ersättningar

Allmänt frågeformat stöder följande makron:

MakroBeskrivningExempel
{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::GoogleMaps::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