Ayrıştırma ve Manipülasyon Yeteneği
- domutils:
domutils
, DOM ağaçları üzerinde düşük seviyeli işlemler yapma yeteneğine sahiptir. Elemanları ekleme, silme veya değiştirme gibi temel manipülasyonları destekler, ancak yüksek seviyeli bir API sunmaz. - htmlparser2:
htmlparser2
, HTML ve XML belgelerini hızlı bir şekilde ayrıştırır. Manipülasyon yetenekleri yoktur, ancak ayrıştırma sırasında verileri işlemek için akış tabanlı bir yaklaşım sunar. - css-select:
css-select
, CSS seçicileri kullanarak DOM elemanlarını seçmek için hafif bir kütüphanedir. Manipülasyon yeteneği yoktur, ancak diğer kütüphanelerle birlikte kullanıldığında güçlü bir seçim aracı sağlar. - jsdom:
jsdom
, tam özellikli bir DOM ve CSSOM uygulaması sağlar, bu da HTML belgelerini ayrıştırma ve manipüle etme yeteneği sunar. Tarayıcı benzeri bir ortamda çalışarak, JavaScript ile etkileşimde bulunmaya olanak tanır. - cheerio:
cheerio
, HTML belgelerini hızlı bir şekilde analiz edebilir ve jQuery benzeri bir API ile elemanları manipüle edebilir. Ancak, gerçek bir DOM yapısı oluşturmaz, bu nedenle bazı tarayıcı tabanlı etkileşimler sınırlıdır. - xpath:
xpath
, XML ve HTML belgelerinde XPath ifadeleri kullanarak elemanları seçme yeteneğine sahiptir. Manipülasyon yapmaz, ancak karmaşık seçimler yapmak için güçlü bir araçtır.
Performans
- domutils:
domutils
, DOM ağaçları üzerinde düşük seviyeli işlemler yaparken hızlıdır. Ancak, karmaşık işlemler için optimize edilmemiştir. - htmlparser2:
htmlparser2
, büyük HTML ve XML belgelerini hızlı bir şekilde ayrıştırmak için tasarlanmıştır. Performansı, akış tabanlı ayrıştırma yöntemi ile artırılmıştır. - css-select:
css-select
, CSS seçicileri ile elemanları seçerken hızlıdır. Hafif yapısı, büyük DOM ağaçlarında bile hızlı seçimler yapmasına olanak tanır. - jsdom:
jsdom
, tam özellikli bir DOM simülasyonu sağladığı için daha fazla bellek ve işlem gücü gerektirir. Ancak, tarayıcı benzeri bir ortamda çalışmak için gereklidir. - cheerio:
cheerio
, hafif bir kütüphane olmasına rağmen, büyük belgelerde jQuery benzeri manipülasyonlar yaparken performans düşüşü yaşayabilir. Ancak, sunucu tarafında hızlı ayrıştırma için optimize edilmiştir. - xpath:
xpath
, XPath ifadelerini değerlendirirken performans, kullanılan ifade ve belge yapısına bağlıdır. Karmaşık ifadeler, daha fazla işlem süresi gerektirebilir.
Tarayıcı Uyumluluğu
- domutils:
domutils
, tarayıcı bağımsızdır ve herhangi bir ortamda DOM ağaçları ile çalışabilir. Diğer kütüphanelerle birlikte kullanıldığında uyumluluk sorunları yoktur. - htmlparser2:
htmlparser2
, tarayıcı bağımsız bir ayrıştırıcıdır ve HTML belgelerini herhangi bir ortamda ayrıştırabilir. Tarayıcı uyumluluğu gerektirmez. - css-select:
css-select
, tarayıcı bağımsızdır ve herhangi bir ortamda CSS seçicileri ile çalışabilir. Diğer kütüphanelerle birlikte kullanıldığında tarayıcı uyumluluğu sorunları yoktur. - jsdom:
jsdom
, tarayıcı benzeri bir ortam sağladığı için tarayıcıda çalışan JavaScript kodunu simüle etmek için idealdir. Tarayıcı uyumluluğu testleri için yaygın olarak kullanılır. - cheerio:
cheerio
, tarayıcı uyumluluğu gerektirmeyen sunucu tarafı uygulamaları için tasarlanmıştır. Tarayıcı ortamında çalışmaz, ancak jQuery benzeri bir API sunarak HTML belgelerini hızlı bir şekilde manipüle eder. - xpath:
xpath
, tarayıcılar ve sunucu ortamları dahil olmak üzere çeşitli ortamlarda çalışabilir. XML ve HTML belgelerinde XPath ifadeleri ile seçim yapma yeteneğine sahiptir.
Örnek Kullanım
- domutils:
domutils
ile DOM Manipülasyonuconst { createElement, removeElement } = require('domutils'); const elem = createElement('div', { class: 'test' }, 'İçerik'); console.log(elem); // <div class="test">İçerik</div> // Elemanı Kaldırma removeElement(elem); console.log(elem); // null (eleman kaldırıldı)
- htmlparser2:
htmlparser2
ile HTML Ayrıştırmaconst { Parser } = require('htmlparser2'); const html = '<div><p>Merhaba</p><p>Dünya</p></div>'; const parser = new Parser({ onopentag(name) { console.log(`Açılan Etiket: ${name}`); }, ontext(text) { console.log(`Metin: ${text}`); }, oncloseTag(name) { console.log(`Kapanan Etiket: ${name}`); }, }); parser.write(html); parser.end();
- css-select:
css-select
ile Eleman Seçimiconst { select } = require('css-select'); const html = '<div><p class="test">Merhaba</p><p class="test">Dünya</p></div>'; const dom = require('htmlparser2').parseDocument(html); // CSS Seçici ile Elemanları Seçme const elemanlar = select('.test', dom); console.log(elemanlar); // [<p class="test">Merhaba</p>, <p class="test">Dünya</p>]
- jsdom:
jsdom
ile Tarayıcı Benzeri Ortam Oluşturmaconst { JSDOM } = require('jsdom'); const dom = new JSDOM('<!DOCTYPE html><p>Hello world</p>'); console.log(dom.window.document.querySelector('p').textContent); // Hello world
- cheerio:
cheerio
ile HTML Manipülasyonuconst cheerio = require('cheerio'); const html = '<ul><li class="item">Bir</li><li class="item">İki</li></ul>'; const $ = cheerio.load(html); // Elemanları Seçme ve Manipülasyon $('.item').each((i, el) => { $(el).text(`Değiştirilen ${i + 1}`); }); console.log($.html()); // <ul><li class="item">Değiştirilen 1</li><li class="item">Değiştirilen 2</li></ul>
- xpath:
xpath
ile XML Belgelerinde Seçimconst { DOMParser } = require('xmldom'); const { evaluate } = require('xpath'); const xml = '<root><item>Bir</item><item>İki</item></root>'; const doc = new DOMParser().parseFromString(xml); // XPath ile Elemanları Seçme const sonuc = evaluate('//item', doc, null, XPathResult.ANY_TYPE, null); let eleman; while (eleman = sonuc.iterateNext()) { console.log(eleman.textContent); // Bir, İki }