Làm thế nào để một crawler tìm được tất cả các trang web? Thực tế, không có một danh mục nào cho tất cả các URL có thể truy cập được trên web. Do đó, cách duy nhất để tập hợp các URL là duyệt trên những trang đã tập hợp được để tìm các siêu liên kết tới các trang khác, những trang mà chưa từng được tập hợp trước đó. Đó chính là nguyên lý cơ bản của một crawler. Chúng bắt đầu từ một tập cho trước các URL; từng bước một, chúng tìm nạp
các trang và từ đó tìm thêm các URL mới liên kết ra các trang bên ngoài, nạp và tiếp tục tìm trên các trang web đó…; chúng cập nhật nội dung các trang đó vào hệ thống định chỉ số văn bản, và lại tiếp tục…
Thủ tục crawling về cơ bản là khá đơn giản, nhưng để trở thành một crawler mạnh mẽ và hiệu quả là một thách thức lớn trong công nghệ vì phải tìm nạp được phần lớn các tài liệu Web khả dụng. Các công ty về tìm kiếm lớn như Alta Vista, Northern Light, Inktomi, Google đã đưa ra các công cụ crawler công nghiệp, crawl phần lớn hệ thống Web. Tuy nhiên, không có gì đảm bảo rằng rằng tất cả những trang khả dụng trên Web đều có thể được xác định bằng cách này. Crawler có thể không bao giờ dừng, khi mà các trang web vẫn liên tục được thêm vào khi mà nó đang thực thi.
Chức năng trung tâm của một crawler là tìm nạp nhiều trang cùng một lúc, để gối lên nhau (làm giảm) các độ trễ do chuyển tên máy chủ trong URL thành một địa chỉ IP sử dụng DNS, kết nối tới một socket của máy chủ và gửi một yêu cầu (request) hay nhận lại trang yêu cầu ở hồi đáp. Quy trình thông thường của một crawler cỡ lớn được thể hiện ở Hình 2.4.
Hình 2.4: Kết cấu cơ bản của một crawler cỡ lớn.
Kết cấu cơ bản của một crawler bao gồm:
Thread tìm nạp trang: bắt đầu với việc giải quyết DNS, kết thúc
khi toàn bộ trang được tìm nạp.
Với mỗi trang, chúng được lưu trữ ở thể nén từ đĩa/băng từ, và
quét để tìm các liên kết ra bên ngoài.
Với tất cả các liên kết ra bên ngoài, duy trì những tiện ích mạng
đã có để không phải nạp lại chúng, dùng load manager.
Tiếp tục cho đến khi crawler tập hợp được đầy đủ (tương đối)
các trang.