Nokogiri dựa trên libxml2, là một trong những trình phân tích cú pháp XML/HTML nhanh nhất trong bất kỳ ngôn ngữ nào. Nó được viết bằng C, nhưng có những ràng buộc bằng nhiều ngôn ngữ.
Vấn đề là tệp càng phức tạp, càng mất nhiều thời gian để xây dựng cấu trúc DOM hoàn chỉnh trong bộ nhớ. Tạo một DOM là chậm hơn và nhiều bộ nhớ đói hơn so với các phương pháp phân tích cú pháp khác (nói chung toàn bộ DOM phải phù hợp với bộ nhớ). XPath dựa trên DOM này.
SAX thường là những gì mọi người chuyển sang cho tốc độ hoặc tài liệu lớn không vừa với bộ nhớ. Đó là sự kiện được định hướng nhiều hơn: nó thông báo cho bạn về một phần tử bắt đầu, phần tử kết thúc, v.v. và bạn viết các trình xử lý để phản ứng với chúng. Đó là một chút đau đớn bởi vì bạn sẽ tự theo dõi trạng thái của mình (ví dụ: các yếu tố bạn "bên trong").
Có nền tảng trung gian: một số trình phân tích cú pháp có khả năng "phân tích cú pháp kéo" nơi bạn có điều hướng giống con trỏ. Bạn vẫn truy cập từng nút một cách liên tục, nhưng bạn có thể "tua đi" tới phần cuối của phần tử mà bạn không quan tâm. Nó có tốc độ SAX nhưng giao diện tốt hơn cho nhiều lần sử dụng. Tôi không biết Nokogiri có thể làm điều này cho HTML hay không, nhưng tôi sẽ xem xét số Reader API nếu bạn quan tâm.
Lưu ý rằng Nokogiri cũng rất khoan dung với đánh dấu không đúng định dạng (chẳng hạn như HTML trong thế giới thực) và điều này một mình làm cho nó trở thành một lựa chọn rất tốt cho phân tích cú pháp HTML.
Nguồn
2010-10-27 23:40:34
nokogiri là đá quý nhanh nhất hiện tại – s84
Tôi tìm thấy bò tốt hơn nokogiri –