Ana içeriğe atla

Yardımcı Yöntemler (utils, tools, sleep)

this.utils.*

.updateResultsData(results, data)

await this.utils.updateResultsData(results, data) - $pages.$i.data ve $data alanlarını otomatik olarak doldurmak için kullanılan yöntemdir; sonuç sayfasının içeriğini eklemek için çağrılması gerekir.

.urlFromHTML(url, base)

await this.utils.urlFromHTML(url, base) - HTML kodundan alınan bir bağlantıyı işler - entity'leri (& vb.) çözer, isteğe bağlı olarak base (örneğin kaynak sayfanın URL'si) iletilebilir, böylece tam bir bağlantı elde edilebilir.

.url.extractDomain(url, removeDefaultSubdomain)

await this.utils.url.extractDomain(url, removeDefaultSubdomain) - ilk parametre olarak bir bağlantı alır ve bu bağlantıdan alan adını döndürür. İkinci isteğe bağlı parametre, www alt alan adının alan adından kesilip kesilmeyeceğini belirler. Varsayılan 0'dır - yani kesilmez.

.url.extractTopDomain(url)

await this.utils.url.extractTopDomain(url) - ilk parametre olarak bir bağlantı alır ve alt alan adları olmadan bu bağlantıdan alan adını döndürür.

.url.extractTopDomainByZone(url)

await this.utils.url.extractTopDomainByZone(url) - ilk parametre olarak bir bağlantı alır ve alt alan adları dahil olmadan bu bağlantıdan alan adını döndürür. Tüm bölgesel alan adları ile çalışır.

.url.extractMaxPath(url)

await this.utils.url.extractMaxPath(url) - bir dize alır ve içinden URL'yi seçer.

.url.extractWOParams(url)

await this.utils.url.extractWOParams(url)- bir bağlantı alır ve parametre dizesine kadar kesilmiş olan aynı bağlantıyı döndürür. Yani ? işaretine kadar olan URL'yi döndürür.

.removeHtml(string)

await this.utils.removeHtml(string) - bir dize alır ve onu HTML etiketlerinden temizlenmiş olarak döndürür. await this.utils.removeNoDigit(string) - bir dize alır, içindeki rakamlar dışındaki her şeyi siler ve sonucu döndürür.

.removeNoDigit(string)

await this.utils.removeNoDigit(string) - yöntem bir dize alır, içindeki rakamlar dışındaki her şeyi siler ve sonucu döndürür

.removeComma(string)

await this.utils.removeComma(string) - yöntem bir dize alır, içindeki .,\r\n gibi karakterleri siler ve sonucu döndürür

.getAllBlocks(html, regexp, opts?)

await this.utils.getAllBlocks(html, regexp, opts?) - sayfadaki tüm blokları karşılık gelen kapanış etiketleriyle birlikte alır, yöntem blok başlangıcını belirten bir HTML dizesi ve bir düzenli ifade alır (eşleşen kapanış etiketlerine sahip tüm bloklar, örneğin <div>...</div>), sonuç olarak bulunan tüm blokların bir dizisi döndürülür

Seçenekler opts:

  • searchStartIndex - dizede aramaya başlanacak indeksi belirtir, varsayılan olarak 0
const blocks = this.utils.getAllBlocks(html, /<div [^>]*?class="results"/)

.getAllBlocksByAttr(html, tag, attrName, attrRegExp, opts?)

await this.utils.getAllBlocksByAttr(html, tag, attrName, attrRegExp, opts?) - .getAllBlocks metoduna benzer bir yöntemdir, blok başlangıcını aramak için düzenli ifade yerine etiket adı, arama yapılacak öznitelik adı (örneğin id, class) ve belirtilen öznitelik değerine uygulanacak düzenli ifade belirtilir

const blocks = this.utils.getAllBlocksByAttr(html, 'div', 'class', /results/)

await tools.*

Global nesne tools, A-Parser yerleşik fonksiyonlarına erişim sağlar

Şablon motoru araçlarının $tools.* analoğu

not

tools.query kullanılamaz, this.query kullanılmalıdır

await tools.createTemplate(string)

JavaScript veri kazıyıcı içerisinde Template Toolkit şablon motorunun kullanılmasına olanak tanır.

let template = await tools.createTemplate("Hello [% content %]!")
template = typeof template == 'function' ? await template({content: 'World'}) : template
this.logger.put(template) // Output: Hello World!

Markdown işaretlemesini HTML'ye dönüştüren veri kazıyıcı kullanım örneği

await this.sleep(sec)

await this.sleep(sec)

İş parçacığında saniye cinsinden (sec) gecikme ayarlar, ondalıklı olabilir.

await this.mutex.*

İş parçacıkları arasında senkronizasyon için Mutex, bir kod bölümünü tek bir iş parçacığı için kilitlemeye olanak tanır

.lock()

Kilidin beklenmesi; kilidi ilk ele geçiren iş parçacığı yürütmeye devam eder, diğer iş parçacıkları kilidin serbest bırakılmasını bekler

.unlock()

Kilidin serbest bırakılması; eğer .lock() ile kilit bekleyen varsa, bir sonraki iş parçacığı yürütmeye devam eder

results.<array>.addElement()

Yöntem results.<array>.addElement() results içindeki dizileri daha rahat doldurmayı sağlar. Kullanıldığında, dizideki değişkenlerin sırasını akılda tutmak ve onları elle tek tek saymak gerekmez.

results.serp.addElement({
link: 'https://google.com',
anchor: 'Google',
snippet: 'Loreps ipsum...',
});

this.isContextAlive()

Bu yöntem, döngü içinde sorguları işleyen uzun ömürlü iş parçacıkları için gereklidir; görevin durdurulması veya silinmesi durumunda çalışmanın düzgün bir şekilde sonlandırılmasını sağlar

while (this.isContextAlive()) {
await this.request(...)
}