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ı

- veri kazıyıcı için sorgu formatı
- veri kazıyıcı için sorgu formatı
- 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
veri kazıyıcı için sorgu formatı değişmeden kaldı,
http://google.comsorgusunu çekecektirveri 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:
$query- genel sonuç formatı üzerinden biçimlendirildikten sonraki sorgu$query.num- sorgunun sıra numarası$query.lvl- Parse to level veya Parse all results seçenekleri kullanıldığında sorgunun derinlik seviyesi$query.orig- biçimlendirmeden önceki orijinal sorgu$query.first- Parse to level veya Parse all results seçenekleri kullanıldığında ilk sorgu$query.prev- önceki seviyedeki sorguyu gösterir,
HTML::LinkExtractor, $tools.query.add ve JS veri kazıyıcılar this.query.add için çalışır- Sorgu Oluşturucu aracılığıyla oluşturulan tüm değişkenler
Yer tutucu makroları
Genel sorgu formatı aşağıdaki makroları destekler:
| Makro | Açı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::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