Ga naar de hoofdinhoud

Query-formattering

Query format (Query-indeling) - hiermee kunt u vervangingen toevoegen en de query naar de gewenste vorm formatteren met behulp van sjablonen, toegepast op elke query.

Query-indelingen

Voorbeeld van query-indelingen
  1. Query-indeling voor de 1e scraper
  2. Query-indeling voor de 2e scraper
  3. Algemene query-indeling

Er zijn 2 manieren om een sjabloon op te geven:

  • Algemene query-indeling, deze wordt als eerste verwerkt en ondersteunt vervangingen
  • Query-indeling voor elke scraper - hiermee kunt u een specifieke indeling instellen voor individuele scrapers

Laten we het voorbeeld op de screenshot bekijken, stel dat we als queries een bestand gebruiken met een lijst met domeinen van dit type:

google.com  
a-parser.com
yandex.ru

De algemene query-indeling is ingesteld als:

http://$query

Vóór elke oorspronkelijke query (domein) wordt de string http:// geplaatst, de query wordt omgezet van google.com -> http://google.com

De query-indeling voor de 1e scraper is ongewijzigd gebleven, deze zal de query http://google.com scrapen

De query-indeling voor de 2e scraper ziet er als volgt uit:

site:$query

De query voor deze scraper wordt omgezet: http://google.com -> site:http://google.com

Sjablonen in queries

In de query-indeling wordt de Template Toolkit-engine volledig ondersteund, de volgende variabelen zijn beschikbaar:

Vervangingsmacro's

Algemene query-indeling ondersteunt de volgende macro's:

MacroBeschrijvingVoorbeelden
{az:START:END}Vervanging van een alfanumerieke reeks. In plaats van START wordt het begin van de reeks opgegeven, in plaats van END het einde. De lengte van END moet groter dan of gelijk zijn aan de lengte van START. Tekens aan het einde van de reeks END moeten na (in alfabetische volgorde) de tekens aan het begin van de reeks START komen. Alle UTF-8 tekenreeksen kunnen worden gebruikt{az:a:z} - vervanging van alle tekens van a tot z (a, b, c, ..., x, z). {az:aaa:zzz} - vervanging van alle tekens van aaa tot zzz (aaa, aab, aac, ..., zzx, zzz). {az:a:zz} - vervanging van alle tekens van a tot zz (a, b, c, ... aa, ab, ..., zx, zz). {az:00:99} - vervanging van alle getallen van 00 tot 99 (00, 01, 02, ..., 98, 99). {az:а:яяя} - vervanging van alle Cyrillische tekens van а tot яяя (а, б, ... аа, аб, ... яяю, яяя)
{each:WORD1,WORD2,...}Vervanging van de opgegeven woorden WORD1, WORD2, enz., lengte is onbeperkt{each:green,blue,red,black} - vervanging van de woorden green, blue, red, black. {each:,buy,sell} - vervanging van een leeg woord, gevolgd door buy en sell
{subs:NAME}Vervanging van extra woorden uit bestanden in de map queries/subs/. In plaats van NAME moet de bestandsnaam worden opgegeven, zonder de extensie .txt{subs:zones} - vervanging van alle regels uit het bestand queries/subs/zones.txt
{num:START:END}De macro doorloopt getallen in het opgegeven bereik. In plaats van START wordt het begin van het interval opgegeven, in plaats van END het einde. Decimale getallen worden ondersteund.{num:1:1000} - vervanging van alle getallen van 1 tot 1000 (1, 2, 3 ..., 999, 1000)
{num:START:END:STEP}De macro doorloopt getallen in het opgegeven bereik met een opgegeven stap. In plaats van START wordt het begin van het interval opgegeven, in plaats van END het einde, in plaats van STEP de stap. Decimale getallen worden ondersteund.{num:0:1000:10} - vervanging van alle getallen van 0 tot 1000 met stap 10 (0, 10, 20 ..., 990, 1000)
{num:END:START}De macro doorloopt getallen in het opgegeven bereik in omgekeerde volgorde. In plaats van END wordt het einde van het interval opgegeven, START geeft het begin van het interval aan. Decimale getallen worden ondersteund.{num:1000:1} - vervanging van alle getallen van 1000 tot 1 (1000, 999, 998, ..., 2, 1)
{num:END:START:STEP}De macro doorloopt getallen in het opgegeven bereik in omgekeerde volgorde met een opgegeven stap. In plaats van END wordt het einde van het interval opgegeven, START geeft het begin van het interval aan, in plaats van STEP de stap. Decimale getallen worden ondersteund.{num:1000:1:10} - vervanging van alle getallen van 1000 tot 1 met stap 10 (1000, 990, 980, ..., 10, 1)

⏩ Video: Vervangingsmacro's

In deze video wordt behandeld:

  • macro {num} in voorbeelden van paginering en het doorlopen van coördinaten in de scraper Maps::GoogleMaps::Google
  • de macro {az} aan de hand van een voorbeeld van gegevensextractie met inurl: om het aantal queries en daarmee de resultaten te verhogen
  • de macro {each} aan de hand van een voorbeeld van het scrapen van suggesties voor het genereren van woordcombinaties

Combineren van vervangingsmacro's

Vervangingsmacro's kunnen worden gecombineerd. Complex voorbeeld:

$query site:{subs:zones} {az:aa:zz}

Stel dat een van de queries voor gegevensextractie viagra was, en in het bestand queries/subs/zones.txt staat de volgende lijst met zones: com, net, org, dan wordt de volgende set combinaties verwerkt:

viagra site:com ab  
...
viagra site:net jj
...
viagra site:eek.rg zz

Het totale aantal queries komt overeen met de vermenigvuldiging van de mogelijke combinaties:

1 query (viagra) x 3 zones ({subs:zones}) x 676 tekenvariaties ({az:aa:zz}) = 2028 queries