Architecture of a Web Crawler
Web crawler arxitekturasi
Ushbu kurs — butun "Go Fundamentals" yo'lida o'rgangan deyarli barcha narsani (struct'lar, interfeyslar, goroutinalar, kanallar, Mutex, HTTP, JSON) birlashtiradigan yakuniy loyiha: concurrent web crawler. U berilgan sahifadan boshlab, undagi havolalarni topib, ularga o'tib, butun bir veb-saytni avtomatik "kezib chiqadi".
Muhim eslatma: bu darslar muhitida haqiqiy internetga chiqish yo'q (Real-World Patterns kursida ko'rganingizdek). Shuning uchun haqiqiy veb-sayt o'rniga, siz soxta, xotiradagi "veb" bilan ishlaysiz — map[string]string orqali URL'larni HTML mazmuniga bog'laydigan kichik, qo'lda tuzilgan sayt namunasi. Crawler mantig'ining o'zi bir xil bo'lib qoladi — faqat sahifalarni "olib kelish" manbai o'zgaradi.
pages := map[string]string{
"https://shop.local/": `<html><body>
<a href="https://shop.local/laptops">Laptops</a>
<a href="https://shop.local/phones">Phones</a>
</body></html>`,
"https://shop.local/laptops": `<html><body>
<a href="https://shop.local/laptops/macbook">MacBook</a>
<a href="https://shop.local/">Home</a>
</body></html>`,
// ...
}Har qanday web crawler bir nechta mustaqil qismdan iborat, va siz ularni aynan shu tartibda, alohida-alohida darslarda quradigan bo'lasiz:
- •Fetcher — berilgan URL'ning HTML mazmunini oladi
- •Link extractor — HTML ichidan havolalarni (URL'larni) ajratib oladi
- •Visited tracker — allaqachon ko'rilgan URL'larni qayta kezmaslik uchun kuzatadi
- •Worker pool — ko'plab sahifani bir vaqtda, concurrent tarzda qayta ishlaydi
- •Depth/rate limiter — crawler cheksiz chuqurlikka yoki haddan tashqari tezlikda ketib qolmasligini nazorat qiladi
- •Reporter — yig'ilgan natijalarni odam o'qiydigan hisobotga aylantiradi
E'tibor bering: bu — Pointers & Memory kursidan boshlab har bir loyihada ko'rgan naqshning eng katta ko'rinishi: kichik, aniq maqsadli qismlarni yozib, ularni oxirgi darsda bitta yaxlit tizimga birlashtirish. Keyingi darsdan boshlaymiz — fetcher va link extractor.
Key Takeaway
Key Takeaway:
Web crawler — mustaqil qismlardan (fetcher, link extractor, visited tracker, worker pool, limiter, reporter) tashkil topgan tizim. Ushbu darslar muhitida haqiqiy internet o'rniga xotiradagi soxta "veb" (map[string]string) ishlatiladi, lekin crawler mantig'ining o'zi haqiqiy dunyodagi bilan bir xil.
NEXT UP
Page Fetching and Link Extraction