Bạn không thể tìm nạp bất kỳ đánh dấu URL nào bằng AJAX do CORS (cross-origin resource sharing) và hầu hết các trang web trên web sẽ không cho phép bất kỳ ai sử dụng nội dung của chúng. Những gì bạn nên làm trong trường hợp của bạn là sử dụng một phương pháp proxy trên máy chủ của bạn.
Tạo hành động nhận URL và tìm nạp đánh dấu trên máy chủ của bạn, sau đó sử dụng AJAX để yêu cầu HTML trang bằng cách sử dụng tác vụ mới của bạn.
Từ đó bạn có hai tùy chọn. Hoặc là phân tích cú pháp HTML trên máy chủ, trích xuất tất cả dữ liệu bạn cần, sau đó gửi lại cho khách hàng HOẶC gửi tất cả HTML trở lại máy khách. Tôi khuyên bạn nên sử dụng máy chủ để thực hiện phân tích cú pháp, nó sẽ sử dụng ít băng thông hơn và máy chủ của bạn có thể có hiệu suất và tốc độ tốt hơn so với hầu hết các trình duyệt cung cấp.
Nếu bạn quyết định phân tích đánh dấu trên đầu máy khách, cách đơn giản nhất để làm như vậy sẽ chuyển HTML vào phần tử gốc, sau đó truy vấn dữ liệu bằng các phương thức thông thường.
ví dụ:
var $root = $('<div>').html(response.html);
console.log($root.find('h1')); // all h1 tags in response's html
Nhược điểm ở đây là một khi bạn đã cho phép trình duyệt để phân tích đánh dấu của bạn nó sẽ tự động tải bất kỳ tài nguyên mà đã có mặt, chẳng hạn như hình ảnh.
Tôi không sử dụng .Net
vì vậy tôi không thể cung cấp cho bạn các công cụ chính xác mà bạn có thể cần, nhưng tôi khuyên bạn nên tự tìm kiếm các cách để thực hiện hai tác vụ này trên máy chủ.
- Đọc nội dung URL nhất định thành chuỗi.
- Sử dụng bất kỳ trình phân tích cú pháp DOM đã cho nào, chuyển cho nó chuỗi HTML và truy vấn dữ liệu.
Nếu có thể, có thể đăng bài 'url 'của trang web bên ngoài? Cảm ơn – guest271314
Bạn có quan tâm đến tất cả các thẻ h1 hay chỉ là thẻ đầu tiên; đối với hình ảnh, nó là rõ ràng? Năm dòng đầu tiên của văn bản ok? – PeterKA