TopGit
Đánh giá repo GitHub

Cheerio: bộ phân tích HTML kiểu jQuery cho Node

cheeriojs/cheerio
CTopGit review image for cheeriojs/cheerio
Review by Topgit.dev for cheeriojs/cheerio, with GitHub repository stats and README context.
Nhận định nhanh

Cheerio là thư viện bạn cần khi muốn scrape hoặc xử lý HTML mà không phải bật cả một trình duyệt. Nó cài đặt một tập con API của jQuery ngay trên nền parse5, nên ai từng viết $('.foo').text() là dùng được ngay. Không chạy JavaScript, không render CSS, không có layout — chỉ có markup vào và markup ra. Với scraping HTML tĩnh thì khó có gì hơn được nó; còn trang nặng JavaScript thì vẫn cần Puppeteer hoặc Playwright.

Sao
★ 30.4k
Fork
⑂ 1.7k
Người đóng góp
👥 170
Ngôn ngữ
TypeScript
Giấy phép
MIT
Chủ đề
Frontend
Cập nhật
Aug 2026
Trang chủ
GitHub

Cheerio là gì?

Cheerio là thư viện Node.js phân tích HTML và XML thành một API kiểu jQuery để bạn truy vấn và chỉnh sửa ngay trên server. Nó nạp một chuỗi document bằng cheerio.load(), sau đó cho phép chọn phần tử bằng CSS selector qua parse5 (hoặc htmlparser2 dễ tính hơn) rồi đọc hoặc đổi nội dung, thuộc tính, class. Không có DOM thật, không trình duyệt, không chạy JavaScript. Theo README, Cheerio chạy được cả trên server lẫn trình duyệt.

Key features: jQuery syntax, fast parsing, flexible input

  • Cài đặt một tập con API cốt lõi của jQuery, nên $('h2.title').text() hay $('h2').addClass('welcome') hoạt động đúng như trong script trình duyệt.
  • Mặc định phân tích bằng parse5, có thể chuyển sang htmlparser2 khi cần xử lý HTML không theo chuẩn — tức HTML scrape thực tế, không chỉ markup sạch.
  • Chạy được cả trên server lẫn trình duyệt, theo README.
  • Render lại thành HTML bằng .html(), thành outerHTML qua .prop('outerHTML'), hoặc thành text thuần bằng .text().
  • Không có overhead của một DOM tree đầy đủ — README mô tả mô hình này là đơn giản và nhất quán, đó là lý do phân tích và thao tác luôn nhanh.
  • Selector có thể giới hạn phạm vi qua $(selector, context, root), cho phép tìm trong một nhánh con thay vì cả document.
Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao

Use case phổ biến: scraping, trích xuất dữ liệu, testing

  • Web scraping — lấy dữ liệu có cấu trúc từ các trang HTML bạn không kiểm soát.
  • Pipeline trích xuất dữ liệu cần lấy field cụ thể từ nhiều trang cùng lúc.
  • Test HTML render phía server mà không cần bật trình duyệt.
  • Xử lý template hoặc hậu xử lý HTML phía server trước khi gửi cho client.

Cài đặt Cheerio

Cài bằng một package manager: npm install cheerio, hoặc bun add cheerio, hoặc deno install cheerio. Theo README, Cheerio phát hành dưới dạng ES module (import * as cheerio from 'cheerio') và cũng dùng được với require() trong môi trường CommonJS.

Phân tích HTML và chọn phần tử

Nạp một chuỗi document bằng const $ = cheerio.load(html), rồi dùng selector kiểu jQuery — $('.apple', '#fruits').text() tìm bên trong phạm vi #fruits. Đọc thuộc tính bằng .attr('class'), lấy markup bên trong bằng .html(), hoặc render lại cả document bằng $.html(). Vậy là xong cả quy trình. Node DOM của Cheerio cũng có các thuộc tính quen thuộc: tagName, parentNode, childNodes, previousSibling, nextSibling, và nhiều hơn nữa, nên code vốn quen duyệt DOM kiểu trình duyệt gần như chạy ngay.

Điểm mạnh

  • Cú pháp jQuery gần như không có đường cong học — ai từng dùng jQuery là bắt tay vào việc ngay.
  • Bọc quanh parse5 kèm tùy chọn dùng htmlparser2 nghĩa là xử lý được HTML lộn xộn ngoài đời thực, không chỉ document sạch.
  • License MIT, nên không có gì mập mờ khi dùng trong scraping hay pipeline dữ liệu thương mại.
  • Hoạt động như nhau dù chạy trên Node hay trong bundle trình duyệt, theo README.

Những gì Cheerio không làm được

  • Không chạy JavaScript — nếu dữ liệu bạn cần được một script phía client tạo ra, Cheerio sẽ không thấy nó; lúc đó phải dùng Puppeteer hoặc Playwright.
  • Không render CSS hay layout, nên bất cứ thứ gì phụ thuộc vào computed style, visibility, hay kích thước viewport đều nằm ngoài khả năng.
  • Đây không phải một DOM implementation đầy đủ — chỉ phần API mà README công bố (tập con của jQuery) mới chắc chắn hoạt động giống jQuery.
  • Danh sách người dùng 'Cheerio in the real world' của README nằm ở wiki chứ không phải trong repo, nên muốn xác minh ai đang dùng nó trong production phải bấm thêm một bước.

Lựa chọn thay thế: jsdom, Puppeteer và các parser khác

Câu hỏi thường gặp

Cheerio có miễn phí và mã nguồn mở không?

Cheerio miễn phí và mã nguồn mở, phát hành theo license MIT. Nghĩa là bạn dùng được trong dự án thương mại hay closed-source mà không phải trả phí hay mở mã nguồn của mình, miễn giữ nguyên license notice.

Cheerio chạy được trên trình duyệt hay chỉ trên server?

Theo README, Cheerio chạy được cả trên server lẫn trình duyệt, không chỉ giới hạn ở Node.js. Nó không phụ thuộc vào một DOM hay window object thật, nên cùng một đoạn code phân tích và selector chạy được ở bất cứ đâu bạn nạp nó.

Cheerio so với jQuery thì khác gì?

Cheerio cài đặt một tập con API của chính jQuery — cùng cú pháp selector và các method như .text(), .attr(), .addClass() — nhưng thao tác trên một chuỗi document bạn tự nạp bằng cheerio.load(), không phải trên DOM trình duyệt thật. Không có event handling hay AJAX, chỉ có phân tích và thao tác markup.

Cheerio dùng parser nào bên dưới?

Cheerio mặc định bọc quanh parse5 để phân tích HTML, và có thể tùy chọn dùng htmlparser2, một parser dễ tính hơn. Theo README, cả hai đều là thư viện riêng mà Cheerio xây API kiểu jQuery lên trên.

Cheerio có xử lý được HTML lỗi hoặc HTML thực tế không?

Theo README, Cheerio phân tích được gần như mọi document HTML hoặc XML, đặc biệt khi cấu hình dùng parser htmlparser2 dễ tính thay vì parse5 mặc định. Sự linh hoạt đó nhắm thẳng vào markup lộn xộn ngoài đời thực, không chỉ document sạch theo chuẩn.

Cheerio nhanh hơn jsdom bao nhiêu?

README mô tả Cheerio là cực nhanh vì nó dùng một mô hình DOM đơn giản, nhất quán thay vì một implementation đầy đủ như trình duyệt. README không đưa ra con số benchmark so với jsdom, nhưng đánh đổi thiết kế đó — mô hình nhẹ hơn thay vì độ chính xác DOM/CSSOM đầy đủ — chính là cơ sở cho tuyên bố về tốc độ.

Vấn đề mà Cheerio giải quyết

Script Node cần đọc dữ liệu từ HTML không có sẵn DOM, còn kéo cả một trình duyệt thật (Puppeteer, một instance headless Chrome) chỉ để chạy querySelectorAll là quá tốn kém cho những trang vốn chẳng cần JavaScript. Cheerio lấp đúng khoảng trống đó — truy vấn kiểu jQuery mà không cần trình duyệt bên dưới, cho phần lớn HTML vốn đã hoàn chỉnh khi tới tay bạn.

Ai nên dùng — và ai nên bỏ qua

Chọn Cheerio nếu bạn đang lấy dữ liệu từ HTML tĩnh hoặc render phía server trong dự án Node và đã quen tư duy selector kiểu jQuery — chỉ vài phút là truy vấn được document. Bỏ qua nó nếu trang bạn nhắm tới render nội dung bằng JavaScript phía client; Cheerio không có engine chạy JavaScript, nên bạn sẽ chỉ parse được một khung rỗng.

Repo liên quan

Nguồn & ghi công

Thông tin và ví dụ code được xác minh từ repo GitHub cheeriojs/cheerio và README của nó.

Dữ liệu GitHub · đồng bộ lần cuối 15 thg 8, 2026Đánh giá bởi Henry
Về TopGit

Vẫn đang phân vân về cheerio?

Một cú bấm sẽ gửi câu hỏi kèm trang này cho AI — xem AI nói gì về cheerio.

GitHub