как написать интернет спайдер

Здравствуйте! Меня интересует, как написать спайдер. Например, чтобы искал все ссылки на сайте. Важен именно принцип. Дайте, пожалуйста, ссылки на статьи с описанием.

На том-же php можно сделать следующим образом:
Через file_get_contents() запрашиваешь главную страничку сайта. Грузишь ее в string-переменную, регулярным выражением выбираешь из нее все ссылки и заносишь в базу данных. Дальше переходишь по первой ссылке в базе данных, опять через file_get_contents() грузишь страничку в переменную, находишь регулярным выражением ссылки, сверяешь их уникальность с ссылками в базе данных, уникальные дописываешь в ту-же табличку.. . но ничего не выйдет из-за max_execution_time. Разве что на Денвере.
file_get_contents() удобен тем, что ты можешь в контексте отправить заголовки, тот-же cookies или user-agent например.