Ana içeriğe atla

Sorgu Formatlama

Query format (Sorgu formatı) - her sorgu için uygulanan şablonları kullanarak yer tutucular eklemenize ve sorguyu istenen forma sokmanıza olanak tanır.

Sorgu formatları

Sorgu formatı örneği
    1. veri kazıyıcı için sorgu formatı
    1. veri kazıyıcı için sorgu formatı
  1. Genel sorgu formatı

Bir şablon belirtmenin 2 yolu vardır:

  • Genel sorgu formatı, ilk olarak işlenir ve yer tutucuları destekler
  • Her veri kazıyıcı için sorgu formatı - belirli veri kazıyıcılar için özel format tanımlamanıza olanak tanır

Ekran görüntüsündeki örneği inceleyelim, sorgu olarak şu şekilde bir alan adı listesi içeren dosya kullandığımızı varsayalım:

google.com  
a-parser.com
yandex.ru

Genel sorgu formatı şu şekilde ayarlanmıştır:

http://$query

Her orijinal sorgunun (alan adı) önüne http:// dizesi eklenecek, sorgu şu şekilde dönüştürülecektir: google.com -> http://google.com

  1. veri kazıyıcı için sorgu formatı değişmeden kaldı, http://google.com sorgusunu çekecektir

  2. veri kazıyıcı için sorgu formatı şu şekildedir:

site:$query

Bu veri kazıyıcı için sorgu şu şekilde dönüştürülecektir: http://google.com -> site:http://google.com

Sorgularda şablonlar

Sorgu formatında Template Toolkit şablon motoru tam olarak desteklenir, değişken olarak şunlar mevcuttur:

Yer tutucu makroları

Genel sorgu formatı aşağıdaki makroları destekler:

MakroAçıklamaÖrnekler
{az:START:END}Sayısal-karakter dizisi yerleştirmesi. START yerine dizinin başlangıcı, END yerine sonu belirtilir. END uzunluğu START uzunluğuna eşit veya ondan büyük olmalıdır. END dizisinin sonundaki karakterler, START dizisinin başındaki karakterlerden (alfabetik sıraya göre) sonra gelmelidir. Herhangi bir UTF-8 karakter dizisi kullanılabilir{az:a:z} - a'dan z'ye tüm karakterlerin yerleştirilmesi (a, b, c, ..., x, z). {az:aaa:zzz} - aaa'dan zzz'ye tüm karakterlerin yerleştirilmesi (aaa, aab, aac, ..., zzx, zzz). {az:a:zz} - a'dan zz'ye tüm karakterlerin yerleştirilmesi (a, b, c, ... aa, ab, ..., zx, zz). {az:00:99} - 00'dan 99'a tüm sayıların yerleştirilmesi (00, 01, 02, ..., 98, 99). {az:а:яяя} - а'dan яяя'ye kadar tüm Kiril karakterlerinin yerleştirilmesi (а, б, ... аа, аб, ... яяю, яяя)
{each:WORD1,WORD2,...}Belirtilen WORD1, WORD2 vb. kelimelerin yerleştirilmesi, uzunluk sınırlaması yoktur{each:green,blue,red,black} - green, blue, red, black kelimelerinin yerleştirilmesi. {each:,buy,sell} - önce boş bir kelime, ardından buy ve sell yerleştirilmesi
{subs:NAME}queries/subs/ klasöründeki dosyalardan ek kelimelerin yerleştirilmesi. NAME yerine .txt uzantısı olmadan dosya adı belirtilmelidir{subs:zones} - queries/subs/zones.txt dosyasındaki tüm satırların yerleştirilmesi
{num:START:END}Makro, belirtilen aralıktaki sayıları döngüye sokar. START yerine aralığın başlangıcı, END yerine sonu belirtilir. Ondalık sayılar desteklenir.{num:1:1000} - 1'den 1000'e kadar tüm sayıların yerleştirilmesi (1, 2, 3 ..., 999, 1000)
{num:START:END:STEP}Makro, belirtilen aralıktaki sayıları belirtilen adımla döngüye sokar. START yerine aralığın başlangıcı, END yerine sonu, STEP yerine adım belirtilir. Ondalık sayılar desteklenir.{num:0:1000:10} - 0'dan 1000'e kadar 10'ar adımla tüm sayıların yerleştirilmesi (0, 10, 20 ..., 990, 1000)
{num:END:START}Makro, belirtilen aralıktaki sayıları ters sırada döngüye sokar. END yerine aralığın sonu, START aralığın başlangıcını belirtir. Ondalık sayılar desteklenir.{num:1000:1} - 1000'den 1'e kadar tüm sayıların yerleştirilmesi (1000, 999, 998, ..., 2, 1)
{num:END:START:STEP}Makro, belirtilen aralıktaki sayıları ters sırada, belirtilen adımla döngüye sokar. END yerine aralığın sonu, START aralığın başlangıcını, STEP ise adımı belirtir. Ondalık sayılar desteklenir.{num:1000:1:10} - 1000'den 1'e kadar 10'ar adımla tüm sayıların yerleştirilmesi (1000, 990, 980, ..., 10, 1)

⏩ Video: Yer tutucu makroları

Bu videoda şunlar incelenmiştir:

  • sayfalarda gezinme ve Maps::GoogleMaps::Google veri kazıyıcıda koordinat tarama örneklerinde {num} makrosu
  • sorgu sayısını ve dolayısıyla sonuçları artırmak için inurl: ile veri çekme örneğinde {az} makrosu
  • kelime öbekleri oluşturmak için öneri çekme örneğinde {each} makrosu

Yer tutucu makrolarının kombinasyonu

Yer tutucu makroları birleştirilebilir. Kapsamlı örnek:

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

Veri çekme sorgularından birinin viagra olduğunu ve queries/subs/zones.txt dosyasında şu alan bölgelerinin bulunduğunu varsayalım: com, net, org, o zaman veri çekme işlemi için şu kombinasyon seti oluşacaktır:

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

Toplam sorgu sayısı, olası kombinasyonların çarpımına eşit olacaktır:

1 sorgu (viagra) x 3 bölge ({subs:zones}) x 676 karakter varyasyonu ({az:aa:zz}) = 2028 sorgu