GoDasturchi
Architecture of a Web Crawler

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.

example.go
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

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.

example.go
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