Algumas semanas atrás, enquanto eu estava desenvolvendo um web crawler junto com um dos alunos de mentoria aqui do Aprenda Golang, nos deparamos com um problema onde precisávamos fazer o parse do resp.Body
duas vezes, sendo a primeira para salvar o body no banco de dados e a segunda para extrair os links do página.
Para ficar mais claro, vamos ver o código abaixo.
// Executa a request resp, err := http.Get(website) if err != nil { log.Println("ERROR:", err) return } defer resp.Body.Close() // Extrai conteúdo para salvar no banco de dados content, err := ioutil.ReadAll(resp.Body) if err != nil { panic(err) } // Retorna uma struct para extrair os links sem regex body, err := html.Parse(resp.Body) if err != nil { panic(err) }Leia mais »