我正在尝试在Golang中构建爬虫。我正在使用net/http库从url下载html文件。我正在尝试将http.resphttp.Header保存到文件中。

如何将这两个文件从各自的格式转换为字符串,以便可以将其写入文本文件。

我还看到了前面有关解析存储的html响应文件的问题。 Parse HTTP requests and responses from text file in Go。有没有办法以这种格式保存网址响应。

最佳答案

编辑:感谢@JimB指向http.Response.Write方法,这比我一开始所建议的要容易得多:

resp, err := http.Get("http://google.com/")

if err != nil{
    log.Panic(err)
}

f, err := os.Create("output.txt")
defer f.Close()

resp.Write(f)

这是我的第一个答案

您可以执行以下操作:
resp, err := http.Get("http://google.com/")

body, err := ioutil.ReadAll(resp.Body)

// write whole the body
err = ioutil.WriteFile("body.txt", body, 0644)
if err != nil {
    panic(err)
}

这是对我的第一个答案的编辑:

感谢@Hector Correa添加了标题部分。这是针对您整个问题的更全面的代码段。这写了 header ,后跟对output.txt的请求的正文
//get the response
resp, err := http.Get("http://google.com/")

//body
body, err := ioutil.ReadAll(resp.Body)

//header
var header string
for h, v := range resp.Header {
    for _, v := range v {
        header += fmt.Sprintf("%s %s \n", h, v)
    }
}

//append all to one slice
var write []byte
write = append(write, []byte(header)...)
write = append(write, body...)

//write it to a file
err = ioutil.WriteFile("output.txt", write, 0644)
if err != nil {
    panic(err)
}

关于go - 如何在Golang中有效存储对文件的HTML响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34995071/

10-10 14:14
查看更多