Crawl toàn bộ một website (tiếp tục)
Ban đầu thì, getLinks được gọi với một URL rỗng. Cái này được dịch như là “front page của Wikipedia ngay sau khi
URL rỗng được gắn trước với http://en.wikipedia.org bên trong hàm. Sau đó, mỗi link trên trang đầu được lặp qua và
một check được thực hiện để xem liệu nó là trong tập các pages cái script đã gặp. Nếu không, nó được thêm vào list
in ra màn hình và hàm getLinks được gọi recursively trên nó
Một cảnh báo về recursion
Đây là một cảnh báo hiếm thấy trong các sách phần mềm, nhưng tôi nghĩ bạn nên biết: nếu để chạy đủ dài, chương trình
trên sẽ hấu như chắc chắn crash.
Python có một giới hạn recursion mặc định (số lần chương trình có thể gọi recursively bản thân nó) là 1,000. Vì
mạng lưới các links Wikipedia là cực lớn, chương trình này sẽ cuối cùng chạm giới hạn recursion đó và dừng lại,
trừ phi bạn đặt vào trong một cái đếm recursion hay thứ gì đó để ngăn chặn cái đó xảy ra.
Cho các sites phẳng cái có ít hơn 1000 links deep, phương pháp này thường làm việc tốt, với một vài ngoại lệ
không bình thường. Ví dụ, tôi một khi gặp một bug trong một URL khởi tạo động cái phụ thuộc vào địa chỉ của
trang hiện tại để link trên trang đó. Cái này dẫn đến kết quả lặp lại vô hạn các đường dẫn như
/blogs/blogs…/blogs/blog-post.php.
Cho hầu hết các phần, tuy nhiên, kĩ thuật recursive này sẽ là tốt cho website điển hình bạn có khả năng gặp.