Şablon Oluşturucu Araçları (tools)
Template Toolkit şablon motorunda, herhangi bir şablonda ve JS veri kazıyıcılar içinde kullanılabilen bir araç setini barındıran $tools global değişkeni mevcuttur.
Ayrıca, tüm araçların çalışması sırasında hata oluşması durumunda hata açıklamasını içeren bir $tools.error değişkeni de bulunmaktadır.
Sorgu ekleme $tools.query.*
Bu araç, görev çalışırken zaten çekilmiş olan sonuçlara dayanarak mevcut sorgulara yeni sorgular eklemenize olanak tanır. Parse to level fonksiyonunun uygulanmadığı veri kazıyıcılarda bu özelliğin bir alternatifi olarak kullanılabilir. 2 yöntem mevcuttur:
[% tools.query.add(query, maxLevel) %]- tek bir sorgu ekler[% tools.query.addAll(array, item, maxLevel) %]- bir sorgu dizisi ekler
maxLevel parametresi, sorguların hangi seviyeye kadar ekleneceğini belirtir ve isteğe bağlıdır: eğer belirtilmezse, veri kazıyıcı yeni sorgular olduğu sürece bunları eklemeye devam eder. Ayrıca, döngüye girmeyi ve veri kazıyıcının gereksiz çalışmasını önlemek için Unique queries (Benzersiz sorgular) seçeneğinin etkinleştirilmesi önerilir.
Alt sorgular için özel bir seviye belirleme imkanı vardır. Bu, mantığı dağıtmak için kullanılabilir; yani her seviye ayrı bir işlevsellik olabilir.
örnek:
[% tools.query.add({query => query, lvl => 1}) %]- belirli bir seviyeye sorgu ekler.
JS için örnek:
this.query.add({
query: "some query",
lvl: 1,
})

Ekran görüntüsündeki preset çalışmasının sonucu:
veri kazıyıcı:
parser
what is parsing in programming
parsing in compiler
compiler and parser development
what is syntax analysis
difference between lexical analysis and syntax analysis
syntax analyzer
parser programming language
parser:
parser definition
xml parser
parser generator
parser swtor
parser c++
ffxiv parser
html parser
parser java
what is parsing in programming:
parse wikipedia
parser compiler
what is a parser
parsing programming languages
definition of parser
parsing c++
parser define
parsing java
html parser:
online html parser
html parser php
html parser java
...
JSON yapılarını ayrıştırma $tools.parseJSON()
Bu araç, JSON formatındaki verileri şablon motorunda kullanılabilir değişkenlere (nesneye) dönüştürmenize olanak tanır. Kullanım örneği:
[% tools.parseJSON(data) %]
Dönüştürme işleminden sonra, elde edilen nesnedeki anahtarlara normal değişkenler ve diziler gibi erişilebilir.
Argüman olarak geçersiz bir JSON dizesi belirtilirse, veri kazıyıcı hatayı $tools.error içine kaydeder.

CSV çıktısı $tools.CSVline
Bu araç, değerleri otomatik olarak CSV formatına getirir ve satır sonu ekler; böylece sonuç formatında sadece gerekli değişkenleri listelemeniz yeterlidir ve sonuçta Google Docs / Excel vb. yerlere aktarılmaya hazır geçerli bir CSV dosyası oluşur.
Kullanım örneği:
[% tools.CSVline(query, p1.serp.0.link, p2.title) %]
$tools.CSVline() kullanımı ile ilgili video:
SQLite veri tabanı ile çalışma $tools.sqlite.*
Bu araç, SQLite veri tabanları ile kolayca ve tam kapsamlı çalışmanıza olanak tanır. Üç yöntem mevcuttur:
$tools.sqlite.get()- SELECT kullanarak veri tabanından tekil bilgi almanızı sağlayan yöntem, örneğin:
[% res = tools.sqlite.get('results/test.sqlite', 'SELECT COUNT(*) AS count FROM test') %]
$tools.sqlite.run()- Veri tabanı işlemlerini (INSERT, DROP vb.) gerçekleştirmenizi sağlayan yöntem, örneğin:
[% res = tools.sqlite.run('results/test.sqlite', 'INSERT INTO test VALUES(?)', 'test') %]
$tools.sqlite.all()- Bir tablodaki tüm verileri listelemenizi sağlayan yöntem, örneğin:
[% res = tools.sqlite.get('results/test.sqlite', 'SELECT * FROM test') %]
User-agent yerleştirme $tools.ua.*
Bu araç, user-agent kullanan veri kazıyıcılarda (örneğin,
Net::HTTP) user-agent'ı değiştirmek için tasarlanmıştır. İki yöntem mevcuttur:
$tools.ua.list()- mevcut tüm user-agent'ların tam listesini içerir.$tools.ua.random()- mevcut user-agent'lar arasından rastgele birini döndürür.
Kullanım örneği:

Tüm user-agent listesi, gerektiğinde düzenlenebilen files/tools/user-agents.txt dosyasında saklanır.
Veri kazıyıcılarda User agent parametresi için bu araç kullanıldığında, bunun açıkça belirtilmesi gerekir:
[% tools.ua.random() %]
Tools içinde JS desteği $tools.js.*
Bu araç, kendi JS fonksiyonlarınızı eklemenize ve bunları doğrudan şablon motorunda kullanmanıza olanak tanır. Ayrıca Node.js modüllerinin kullanımı da desteklenmektedir. Fonksiyonlar Tools -> JavaScript Editor kısmından eklenir.
base64 ile çalışma $tools.base64.*
Bu araç, doğrudan veri kazıyıcı içinde base64 ile çalışmanıza olanak tanır. Bu aracın 2 yöntemi vardır:
$tools.base64.encode()- metni base64 formatında kodlar$tools.base64.decode()- base64 dizesini metne geri dönüştürür
Kullanım örneği:

Veri sözlüğü $tools.data.*
Bu araç, aslında içinde diller, bölgeler, arama motorları için alan adları vb. gibi çok sayıda önceden tanımlanmış bilgi barındıran bir nesnedir. Öğelerin tam listesi (gelecekte değişebilir):
"YandexWordStatRegions", "TopDomains", "CountryCodes", "YahooLocalDomains", "GoogleDomains", "BingTranslatorLangs", "Top1000Words", "GoogleLangs", "GoogleInterfaceLangs", "EnglishMonths", "GoogleTrendsCountries"
Bu öğelerin her biri bir veri dizisi veya hash yapısıdır; içerik, verileri örneğin JSON olarak yazdırarak görülebilir:
[% tools.data.GoogleDomains.json() %]
Bellek içi veri deposu $tools.memory.*
Tüm görevler, API istekleri vb. için ortak olan, bellekteki basit bir anahtar/değer (key/value) deposudur; veri kazıyıcı yeniden başlatıldığında sıfırlanır. Üç yöntem mevcuttur:
[% tools.memory.set(key, value) %]-keyanahtarı içinvaluedeğerini atar[% tools.memory.get(key) %]-keyanahtarına karşılık gelen değeri döndürür[% tools.memory.delete(key) %]-keyanahtarına göre kaydı bellekten siler
A-Parser sürüm bilgisini alma $tools.aparser.version()
Bu araç, A-Parser sürümü hakkında bilgi almanıza ve bunu sonuca yazdırmanıza olanak tanır.
Kullanım örneği:
[% tools.aparser.version() %]
Görev ID'si ve iş parçacığı sayısını alma $tools.task.*
Bu araç, görev id'si hakkında bilgi almanıza ve iş parçacığı sayısını göstermenize olanak tanır. İki yöntem mevcuttur:
[% tools.task.id %]- görev id'sini döndürür[% tools.task.threadsCount %]- görevde kullanılan iş parçacığı sayısını döndürür
Görevi durdurma $tools.task.stop()
Bu araç, görevin yürütülmesini herhangi bir anda durdurmanıza olanak tanır. Argüman olarak, görevin durdurulma nedenini içermesi gereken bir dize kabul eder.
Kullanım örneği:
[% IF query.num == 3;
tools.task.stop('Stop after 3 queries');
END %]