第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在golang中有效地存儲對文件的html響應(yīng)

如何在golang中有效地存儲對文件的html響應(yīng)

Go
縹緲止盈 2021-12-07 15:53:21
我正在嘗試在 Golang 中構(gòu)建一個爬蟲。我正在使用net/http庫從 url 下載 html 文件。我正在嘗試保存http.resp并保存http.Header到文件中。如何將這兩個文件從各自的格式轉(zhuǎn)換為字符串,以便將其寫入文本文件。我還看到了之前關(guān)于解析存儲的 html 響應(yīng)文件的問題。 在 Go 中解析來自文本文件的 HTTP 請求和響應(yīng)。有沒有辦法以這種格式保存 url 響應(yīng)。
查看完整描述

3 回答

?
aluckdog

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個贊

Go 有一個帶有響應(yīng)轉(zhuǎn)儲的 httputil 包。 https://golang.org/pkg/net/http/httputil/#DumpResponse。響應(yīng)轉(zhuǎn)儲的第二個參數(shù)是是否包含正文的布爾值。因此,如果您只想將標(biāo)題保存到文件中,請將其設(shè)置為 false。


將響應(yīng)轉(zhuǎn)儲到文件的示例函數(shù)可能是:


import (

    "io/ioutil"

    "net/http"

    "net/http/httputil"

)


func dumpResponse(resp *http.Response, filename string) error {

    dump, err := httputil.DumpResponse(resp, true)

    if err != nil {

        return err

    }


    return ioutil.WriteFile(filename, dump, 0644)

}


查看完整回答
反對 回復(fù) 2021-12-07
?
炎炎設(shè)計

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個贊

編輯:感謝@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)

}

這是對我的第一個答案的編輯:


感謝添加標(biāo)題部分的@Hector Correa。這是一個更全面的片段,針對您的整個問題。這將標(biāo)題后跟請求正文寫入 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)

}


查看完整回答
反對 回復(fù) 2021-12-07
?
白衣非少年

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個贊

您還可以從響應(yīng)中獲取標(biāo)題,如下所示:


for header, values := range resp.Header {

    for _, value := range values {

        log.Printf("\t\t %s %s", header, value)

    }

}


查看完整回答
反對 回復(fù) 2021-12-07
  • 3 回答
  • 0 關(guān)注
  • 194 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號