美文网首页
golang请求网站(b站)返回body信息乱码问题

golang请求网站(b站)返回body信息乱码问题

作者: mudssky | 来源:发表于2020-11-12 09:18 被阅读0次

    ​ 这次请求的网站是bilibili,乱码的内容有很多菱形符号。

    ​ 一般乱码问题,我首先会考虑字符编码的问题。比如典型的日文编码SHIFT_JIS在windows系统记事本中打开,就会出现乱码。

    ​ 但是这次有点不一样,因为我拿notepad++打开后切换了几种常用的编码后还是乱码,参考别人写的针对b站的爬虫才发现了问题所在。b站返回的请求包是经过gzip压缩的。

    ​ 所以需要一个解压返回的请求的过程。为了提高代码的可维护性,还是把请求和解压,编码转换之类的固定流程封装一下比较好。

    // 检测返回的body是否经过压缩,并返回解压的内容
    func switchContentEncoding(res *http.Response) (bodyReader io.Reader, err error) {
        switch res.Header.Get("Content-Encoding") {
        case "gzip":
            bodyReader, err = gzip.NewReader(res.Body)
        case "deflate":
            bodyReader = flate.NewReader(res.Body)
        default:
            bodyReader = res.Body
        }
        return
    }
    

    相关文章

      网友评论

          本文标题:golang请求网站(b站)返回body信息乱码问题

          本文链接:https://www.haomeiwen.com/subject/rauubktx.html