cú pháp CSS là tuyệt vời vì hai lý do:
- Nó là một thứ tự cường độ nhanh và ít tài nguyên chuyên sâu hơn so với XPath phức tạp hơn.
- Khi những gì bạn muốn tìm có thể được tìm thấy với bộ chọn css, truy vấn XPath tương ứng sẽ thực hiện tương tự hầu hết thời gian sẽ lâu hơn và khó đọc hơn.
Trường hợp tại điểm: lấy selector css này: h1.header > a[rel~="author"]
nó chức năng ngắn XPath tương đương sẽ //h1[contains(" "+normalize-space(@class)+" "," header ")]/a[contains(" "+normalize-space(@rel)+" "," author ")]
... đó là cả nhiều khó khăn hơn để đọc và viết.
Nếu bạn đã viết XPath này để thay thế: đánh dấu //h1[@class="header"]/a[@rel="author"]
... bạn sẽ không đúng cách đã bỏ lỡ như <h1 class="article header"><a rel="author external" href="/mike">...</a></h1>
Khi bạn thực sự cần XPath, tuy nhiên, đó là lựa chọn duy nhất, trừ khi bạn muốn đi bộ xung quanh DOM bằng tay với mã (được ẩn nhanh).
Cá nhân (và tôi là một trong những người duy trì Greasemonkey), tôi sử dụng thư viện on.js
rất nhỏ cho tất cả các nhu cầu cắt nút của mình - điều này mang lại cho tôi sự kết hợp cả XPath (khi tôi cần) và CSS (mà tôi có xu hướng sử dụng hầu như mọi lúc) - chủ yếu là vì nó cho phép tôi tách riêng tất cả các mã liên quan đến việc đào lên các phần của trang mà tôi cần tiêu hóa, vào tiêu đề tập lệnh để mã của tôi được phân phối tất cả những thứ cần thiết, và có thể là tất cả về việc thực sự làm những điều thú vị hoặc tuyệt vời cho các trang web.
Trình duyệt web được tối ưu hóa rất nhiều để chạy javascript rất nhanh và nếu bạn là bạn, tôi khuyên bạn nên sử dụng bất kỳ điều gì làm cho bạn hiệu quả và hài lòng nhất với tư cách là nhà phát triển. Tuy nhiên, một trong những lợi ích phụ của on.js
là tự động giúp các tập lệnh thường không chạy được, trên các trang mà các nút mà bạn nghĩ là ở xung quanh, bật ra không phải là, thay vì hủy trang .
không phải là hai điều hoàn toàn khác nhau? Tôi nghĩ querySelector là dành cho các bộ chọn CSS và XPath là dành cho các nút/thuộc tính XML. –
Cả bộ chọn CSS và XPath đều hoạt động trên DOM và vì cả hai tài liệu XML và HTML được xác định theo mô hình đối tượng tài liệu, bạn có thể sử dụng cả hai ngày này, nhờ vào 'querySelector *' và 'document.evaluate'. Trong thế giới IE ngược (thậm chí đếm IE10), tuy nhiên, hỗ trợ XPath nguyên bản vẫn không nằm trong các tài liệu HTML. – ecmanaut