GoDasturchi
Crawl Results and Reporting

Crawl Results and Reporting

Crawl natijalari va hisobot

Xom URL ro'yxati foydali, lekin odam o'qiydigan hisobot ancha qimmatli: qaysi sahifalar ko'rildi, har birida nechta havola bor edi, va jami nechta sahifa qayta ishlandi. Bu — YAML Data Pipeline kursidagi FormatReport darsining aynan shu naqshi.

example.go
func GenerateReport(pages map[string]string, urls []string) string {
    sorted := make([]string, len(urls))
    copy(sorted, urls)
    sort.Strings(sorted)

    lines := []string{}
    for _, u := range sorted {
        links := ExtractLinks(pages[u])
        lines = append(lines, fmt.Sprintf("%s (%d links)", u, len(links)))
    }
    lines = append(lines, fmt.Sprintf("Total pages: %d", len(sorted)))
    return strings.Join(lines, "\n")
}

copy(sorted, urls) — kiruvchi urls slice'ini o'zgartirmaslik uchun uning nusxasini yaratadi (Composite Types kursidagi "slice'lar umumiy massivga ishora qiladi" ogohlantirishining amaliy natijasi: agar to'g'ridan-to'g'ri sort.Strings(urls) chaqirilsa, chaqiruvchining asl slice'i ham tartiblanib qolardi). Saralash — Concurrency Fundamentals kursida ko'rganingizdek, natijani bashorat qilinadigan qiladi, chunki CrawlConcurrent qaytargan tartib goroutinalar tugash tartibiga bog'liq bo'lishi mumkin edi.

>_ Exercise

GenerateReport(pages map[string]string, urls []string) string funksiyasini yozing. U urlsning saralangan nusxasini yaratadi (asl slice'ni o'zgartirmasdan), har bir URL uchun "<url> (<son> links)" qatorini hosil qiladi (ExtractLinks yordamida), oxiriga "Total pages: <son>" qatorini qo'shadi, va hammasini yangi qator bilan birlashtirib qaytaradi.

Stuck? Reveal a hint to help you.

Hints (0/4)

Key Takeaway

Key Takeaway:

Hisobot yaratish — ma'lumotni saralab, uni bashorat qilinadigan, o'qish oson formatga aylantirish. Kiruvchi slice'ni o'zgartirmaslik uchun copy bilan nusxa yaratish — ma'lumotni tashqi tomonda kutilmagan tarzda o'zgartirmaslik uchun muhim odat.

NEXT UP

Putting It All Together

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Crawl Results and Reporting

Crawl natijalari va hisobot

Xom URL ro'yxati foydali, lekin odam o'qiydigan hisobot ancha qimmatli: qaysi sahifalar ko'rildi, har birida nechta havola bor edi, va jami nechta sahifa qayta ishlandi. Bu — YAML Data Pipeline kursidagi FormatReport darsining aynan shu naqshi.

example.go
func GenerateReport(pages map[string]string, urls []string) string {
    sorted := make([]string, len(urls))
    copy(sorted, urls)
    sort.Strings(sorted)

    lines := []string{}
    for _, u := range sorted {
        links := ExtractLinks(pages[u])
        lines = append(lines, fmt.Sprintf("%s (%d links)", u, len(links)))
    }
    lines = append(lines, fmt.Sprintf("Total pages: %d", len(sorted)))
    return strings.Join(lines, "\n")
}

copy(sorted, urls) — kiruvchi urls slice'ini o'zgartirmaslik uchun uning nusxasini yaratadi (Composite Types kursidagi "slice'lar umumiy massivga ishora qiladi" ogohlantirishining amaliy natijasi: agar to'g'ridan-to'g'ri sort.Strings(urls) chaqirilsa, chaqiruvchining asl slice'i ham tartiblanib qolardi). Saralash — Concurrency Fundamentals kursida ko'rganingizdek, natijani bashorat qilinadigan qiladi, chunki CrawlConcurrent qaytargan tartib goroutinalar tugash tartibiga bog'liq bo'lishi mumkin edi.

>_ Exercise

GenerateReport(pages map[string]string, urls []string) string funksiyasini yozing. U urlsning saralangan nusxasini yaratadi (asl slice'ni o'zgartirmasdan), har bir URL uchun "<url> (<son> links)" qatorini hosil qiladi (ExtractLinks yordamida), oxiriga "Total pages: <son>" qatorini qo'shadi, va hammasini yangi qator bilan birlashtirib qaytaradi.

Stuck? Reveal a hint to help you.

Hints (0/4)

Key Takeaway

Key Takeaway:

Hisobot yaratish — ma'lumotni saralab, uni bashorat qilinadigan, o'qish oson formatga aylantirish. Kiruvchi slice'ni o'zgartirmaslik uchun copy bilan nusxa yaratish — ma'lumotni tashqi tomonda kutilmagan tarzda o'zgartirmaslik uchun muhim odat.

NEXT UP

Putting It All Together