domutils vs htmlparser2 vs css-select vs jsdom vs cheerio vs xpath
"Web Sayfası Analizi ve Manipülasyonu" npm Paketleri Karşılaştırması
1 Yıl
domutilshtmlparser2css-selectjsdomcheerioxpathBenzer Paketler:
Web Sayfası Analizi ve Manipülasyonu Nedir?

Web sayfası analizi ve manipülasyonu için kullanılan kütüphaneler, HTML ve XML belgelerini işlemek, içeriğini analiz etmek, değiştirmek veya yeni içerik eklemek için araçlar sağlar. Bu kütüphaneler, web kazıyıcıları, otomasyon araçları ve sunucu tarafı uygulamaları gibi çeşitli senaryolar için faydalıdır. Örneğin, cheerio, jQuery benzeri bir API sunarak HTML belgeleri üzerinde hızlı ve etkili bir şekilde gezinmeyi ve manipüle etmeyi sağlar. jsdom ise bir tarayıcı ortamı simüle ederek, JavaScript'in DOM ile etkileşimde bulunmasına olanak tanır, bu da daha karmaşık etkileşimler ve testler için uygundur.

npm İndirme Trendi
GitHub Stars Sıralaması
İstatistik Detayı
Paket
İndirmeler
Stars
Boyut
Issues
Yayın Tarihi
Lisans
domutils54,375,199213167 kB5il y a 6 moisBSD-2-Clause
htmlparser242,477,6074,613489 kB20il y a 7 moisMIT
css-select41,357,259581328 kB6il y a 17 joursBSD-2-Clause
jsdom36,429,10821,1023.18 MB435il y a 3 moisMIT
cheerio12,495,84729,6261.26 MB32il y a un moisMIT
xpath3,464,011232183 kB24il y a 2 ansMIT
Özellik Karşılaştırması: domutils vs htmlparser2 vs css-select vs jsdom vs cheerio vs xpath

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ülasyonu

    const { 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ırma

    const { 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çimi

    const { 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şturma

    const { 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ülasyonu

    const 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çim

    const { 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
    }
    
Nasıl Seçilir: domutils vs htmlparser2 vs css-select vs jsdom vs cheerio vs xpath
  • domutils:

    domutils'u, DOM ağaçları ile düşük seviyeli işlemler yapmak için kullanın. Diğer kütüphanelerle birlikte çalışmak üzere tasarlanmıştır ve DOM manipülasyonu için temel araçlar sağlar.

  • htmlparser2:

    htmlparser2'yi, hızlı ve esnek bir HTML ve XML ayrıştırıcıya ihtiyacınız varsa tercih edin. Büyük belgeleri işlemek için optimize edilmiştir ve akış tabanlı ayrıştırma sağlar.

  • css-select:

    css-select'i, CSS seçicileri kullanarak DOM elemanlarını seçmek için bağımsız bir çözüm arıyorsanız tercih edin. Diğer kütüphanelerle birlikte kullanılabilir ve hafif bir seçici motoru sunar.

  • jsdom:

    jsdom'u, tam özellikli bir DOM ve CSSOM uygulaması ile tarayıcı benzeri bir ortam oluşturmak istiyorsanız kullanın. Tarayıcıda çalışan JavaScript kodunu test etmek ve simüle etmek için idealdir.

  • cheerio:

    cheerio'yu, jQuery benzeri bir API ile HTML belgelerini hızlı bir şekilde analiz etmek ve manipüle etmek istiyorsanız tercih edin. Özellikle sunucu tarafında hızlı ve hafif bir çözüm arıyorsanız idealdir.

  • xpath:

    xpath'i, XML ve HTML belgelerinde XPath ifadeleri kullanarak karmaşık seçimler yapmak istiyorsanız tercih edin. XML verileri ile çalışırken güçlü ve esnek bir araçtır.