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.
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.
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
$ go run main.go
Kodingizni ishga tushiring