DE EN ES FR ID JA KO PT RU TH VI ZH

Dokumentasi Cheerio v1.2.0

Cheerio adalah library yang cepat, fleksibel, dan elegan untuk parsing dan memanipulasi HTML dan XML di sisi server. Library ini mengimplementasikan subset dari fungsionalitas inti jQuery, menyediakan API yang familiar bagi developer sambil dioptimalkan untuk lingkungan server-side.

Fitur Versi Terkini (1.2.0)

Method Loading Inti

Versi terkini menyediakan beberapa cara yang powerful untuk memuat dan parsing dokumen HTML/XML:

import * as cheerio from 'cheerio';

// Basic loading from string
const $ = cheerio.load('<h2 class="title">Hello world</h2>');

// Loading from buffer with encoding detection
const buffer = fs.readFileSync('index.html');
const $ = cheerio.loadBuffer(buffer);

// Loading from URL with automatic encoding detection
const $ = await cheerio.fromURL('https://example.com');

// Stream-based loading for large documents
const stream = cheerio.stringStream({}, (err, $) => {
  if (!err) {
    console.log($('h1').text());
  }
});

Dukungan TypeScript yang Ditingkatkan

Versi 1.2.0 menyertakan definisi TypeScript yang komprehensif dengan type safety yang lebih baik:

import { CheerioAPI, Cheerio, Element } from 'cheerio';

// Strongly typed element selection
const $: CheerioAPI = cheerio.load(html);
const elements: Cheerio<Element> = $('.my-class');

API Extract yang Baru

Fitur baru yang powerful untuk ekstraksi data dari dokumen HTML:

const data = $root.extract({
  title: 'h1',
  links: [{ selector: 'a', value: 'href' }],
  metadata: {
    selector: '.meta',
    value: {
      author: '.author',
      date: '.date'
    }
  }
});

Penanganan URL Lanjutan

Dukungan yang ditingkatkan untuk resolusi URL dengan baseURI:

const $ = cheerio.load(html, { 
  baseURI: 'https://example.com/page/' 
});

// Automatically resolves relative URLs
$('a').prop('href'); // Returns absolute URL
$('img').prop('src'); // Returns absolute URL

Fitur Utama Berdasarkan Kategori

Manipulasi DOM

Penanganan Form

// Serialize forms to URL-encoded strings
$('form').serialize(); // 'name=value&email=test@example.com'

// Get form data as structured arrays
$('form').serializeArray();
// [{ name: 'username', value: 'john' }, ...]

CSS dan Styling

// Get/set CSS properties
$('.element').css('color', 'red');
$('.element').css(['margin', 'padding']); // Get multiple properties

// Class manipulation
$('.item').addClass('active selected');
$('.item').removeClass('old-class');
$('.item').toggleClass('visible');

Data Attribute

// HTML5 data-* attribute support with automatic type coercion
$('.widget').data('config'); // Parses JSON automatically
$('.widget').data('count', 42); // Set data programmatically

Migrasi dari Versi Lama

Dari 0.x ke 1.x

Perubahan Utama yang Perlu Diperhatikan

// Old way (0.x) - still works but discouraged
const cheerio = require('cheerio');
const $ = cheerio.load(html);

// New way (1.x) - recommended
import * as cheerio from 'cheerio';
const $ = cheerio.load(html);

Peningkatan Performa

Versi 1.2.0 menyertakan peningkatan performa yang signifikan:

// Stream processing for large files
const stream = cheerio.decodeStream({
  encoding: { defaultEncoding: 'utf8' }
}, (err, $) => {
  // Process document as it streams
});

Fitur Lanjutan

Opsi Parser Kustom

const $ = cheerio.load(html, {
  xmlMode: true,        // Parse as XML
  decodeEntities: false, // Don't decode HTML entities
  scriptingEnabled: false // Disable script tag processing
});

Network Loading dengan Opsi

const $ = await cheerio.fromURL('https://api.example.com/data', {
  requestOptions: {
    headers: { 'User-Agent': 'MyBot/1.0' }
  },
  encoding: { defaultEncoding: 'utf8' }
});

Best Practice

  1. Gunakan TypeScript: Manfaatkan definisi type yang komprehensif
  2. Stream dokumen besar: Gunakan API streaming untuk manajemen memori yang lebih baik
  3. Manfaatkan API extract: Gunakan method extract yang baru untuk ekstraksi data terstruktur
  4. Set baseURI: Ketika melakukan scraping website, set baseURI untuk resolusi URL yang tepat

Perbedaan Browser vs Server

Cheerio dirancang untuk penggunaan server-side dan menghilangkan fitur jQuery yang spesifik untuk browser sambil menambahkan fungsionalitas yang dioptimalkan untuk server seperti:

Hal ini membuat Cheerio ideal untuk web scraping, server-side rendering, dan tugas pemrosesan HTML/XML apa pun di lingkungan Node.js.