Przejdź do treści głównej

Formatowanie zapytań

Query format (Format zapytania) - pozwala dodawać podstawienia i formatować zapytanie do pożądanego wyglądu przy użyciu szablonów, stosowany dla każdego zapytania.

Formaty zapytań

Przykład formatów zapytań
  1. Format zapytania dla 1-go scrapera
  2. Format zapytania dla 2-go scrapera
  3. Ogólny format zapytań

Istnieją 2 sposoby określenia szablonu:

  • Ogólny format zapytań, jest on przetwarzany jako pierwszy i obsługuje podstawienia
  • Format zapytania dla każdego scrapera - pozwala ustawić specyficzny format dla poszczególnych scraperów

Przeanalizujmy przykład na zrzucie ekranu, załóżmy, że jako zapytań używamy pliku z listą domen w takiej postaci:

google.com  
a-parser.com
yandex.ru

Ogólny format zapytania jest ustawiony jako:

http://$query

Przed każdym zapytaniem źródłowym (domeną) zostanie wstawiony ciąg http://, zapytanie zostanie przekształcone google.com -> http://google.com

Format zapytania dla 1-go scrapera pozostał niezmieniony, będzie on scrapować zapytanie http://google.com

Format zapytania dla 2-go scrapera wygląda następująco:

site:$query

Zapytanie dla tego scrapera zostanie przekształcone: http://google.com -> site:http://google.com

Szablony w zapytaniach

W formacie zapytania w pełni obsługiwany jest silnik szablonów Template Toolkit, jako zmienne dostępne są:

Makra podstawień

Ogólny format zapytania obsługuje następujące makra:

MakroOpisPrzykłady
{az:START:END}Podstawienie sekwencji cyfrowo-znakowej. Zamiast START podaje się początek sekwencji, zamiast END - koniec. Długość END musi być większa lub równa długości START. Znaki na końcu sekwencji END muszą występować po (w porządku alfabetycznym) znakach na początku sekwencji START. Można używać dowolnych sekwencji znaków UTF-8{az:a:z} - podstawienie wszystkich znaków od a do z (a, b, c, ..., x, z). {az:aaa:zzz} - podstawienie wszystkich znaków od aaa do zzz (aaa, aab, aac, ..., zzx, zzz). {az:a:zz} - podstawienie wszystkich znaków od a do zz (a, b, c, ... aa, ab, ..., zx, zz). {az:00:99} - podstawienie wszystkich liczb od 00 do 99 (00, 01, 02, ..., 98, 99). {az:a:yyy} - podstawienie wszystkich znaków cyrylicy od a do yyy (a, b, ... aa, ab, ... yyu, yyy)
{each:WORD1,WORD2,...}Podstawienie określonych słów WORD1, WORD2 itd., długość nieograniczona{each:green,blue,red,black} - podstawienie słów green, blue, red, black. {each:,buy,sell} - podstawienie pustego słowa, a następnie buy i sell
{subs:NAME}Podstawienie dodatkowych słów z plików w folderze queries/subs/. Zamiast NAME należy podać nazwę pliku, bez rozszerzenia .txt{subs:zones} - podstawienie wszystkich linii z pliku queries/subs/zones.txt
{num:START:END}Makro iteruje po liczbach w podanym zakresie. Zamiast START podaje się początek przedziału, zamiast END - koniec. Obsługiwane są liczby ułamkowe.{num:1:1000} - podstawienie wszystkich liczb od 1 do 1000 (1, 2, 3 ..., 999, 1000)
{num:START:END:STEP}Makro iteruje po liczbach w podanym zakresie, z określonym krokiem. Zamiast START podaje się początek przedziału, zamiast END - koniec, zamiast STEP - krok. Obsługiwane są liczby ułamkowe.{num:0:1000:10} - podstawienie wszystkich liczb od 0 do 1000 z krokiem 10 (0, 10, 20 ..., 990, 1000)
{num:END:START}Makro iteruje po liczbach w podanym zakresie w odwrotnej kolejności. Zamiast END - podaje się koniec przedziału, START oznacza początek przedziału. Obsługiwane są liczby ułamkowe.{num:1000:1} - podstawienie wszystkich liczb od 1000 do 1 (1000, 999, 998, ..., 2, 1)
{num:END:START:STEP}Makro iteruje po liczbach w podanym zakresie w odwrotnej kolejności, z określonym krokiem. Zamiast END - podaje się koniec przedziału, START oznacza początek przedziału, zamiast STEP - krok. Obsługiwane są liczby ułamkowe.{num:1000:1:10} - podstawienie wszystkich liczb od 1000 do 1 z krokiem 10 (1000, 990, 980, ..., 10, 1)

⏩ Wideo: Makra podstawień

W tym wideo omówiono:

  • makro {num} na przykładach przechodzenia przez strony i iteracji po współrzędnych w scraperze Maps::GoogleMaps::Google
  • makro {az} na przykładzie scrapowania z inurl: w celu zwiększenia liczby zapytań i odpowiednio wyników
  • makro {each} na przykładzie scrapowania podpowiedzi do generowania fraz

Łączenie makr podstawień

Makra podstawień można łączyć. Kompleksowy przykład:

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

Załóżmy, że jednym z zapytań do scrapowania było viagra, a w pliku queries/subs/zones.txt znajduje się następująca lista stref: com, net, org, wtedy do scrapowania trafi następujący zestaw kombinacji:

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

Całkowita liczba zapytań będzie odpowiadać iloczynowi możliwych kombinacji:

1 zapytanie (viagra) x 3 strefy ({subs:zones}) x 676 wariacji znakowych ({az:aa:zz}) = 2028 zapytań