Go语言对获取的html进行转码

作者: Ecjtu_lei | 来源:发表于2018-06-13 20:16 被阅读0次

一.首先我们需要下载两个包:"golang.org/x/text" ”golang.org/x/net/html",前者用来对HTML进行转码,而后者则是猜测出当前获取的HTML是哪一种编码,辅助前者完成转码。

本次Demo使用到的包:

import (
    "fmt"
    "net/http"
    "io/ioutil"
    "golang.org/x/text/transform"
    "io"
    "golang.org/x/text/encoding"
    "bufio"
    "golang.org/x/net/html/charset"
)

二.main函数:

func main(){
    resp,err := http.Get("http://www.zhenai.com/zhenghun") //获取页面返回的response
    if err != nil{
        panic(err)
    }
    defer resp.Body.Close() //记得每次都要关闭response的body哦
    if resp.StatusCode != http.StatusOK{
        fmt.Printf("Wrong status code :%d",resp.StatusCode)
        return
    }
    utf8Reader := transform.NewReader(resp.Body,Determineencoding(resp.Body).NewDecoder()) 
    //将其他编码的reader转换为常用的utf8reader
    all,err := ioutil.ReadAll(utf8Reader)
    if err != nil{
        panic(err)
    }
    fmt.Printf("%s",all)
}

三.Determineencoding函数:用来猜测HTML代码的编码格式,如gbk、utf8。

func Determineencoding(r io.Reader) encoding.Encoding  {
    bytes,err  := bufio.NewReader(r).Peek(1024)
    if err !=nil {
        panic(err)
    }
    e,_,_ := charset.DetermineEncoding(bytes,"")
    return e
}

详情见Determineencoding函数的介绍,它是根据reader的前1024个字节来猜测编码格式的。

相关文章

  • Go语言对获取的html进行转码

    一.首先我们需要下载两个包:"golang.org/x/text" ”golang.org/x/net/html"...

  • HTML实体转码

    以下代码用来将包含HTML实体的lrc文档字符串进行转码 转码前: 转码后:

  • Go 关于SOCKET客户端中文编码转换

    用go编写Socket发现,从客户端输入中文时,服务器端无法正常显示。 需要对中文进行转码。 转码需要从go官方的...

  • Go语言学习笔记2:面向对象编程

    前言 相比于传统的Java,C#和C++语言相比,Go语言对于面向对象的支持非常的简洁而优雅。简洁之处在于,Go语...

  • ffmpeg 音频转码

    转码一般流程 获取音频数据(AAC,MP3等) 解码(获取音频原始采样数据pcm) 编码(对pcm进行编码) 使用...

  • 言对语

    当两人说不到一起时 矛盾便会产生 若感觉还在 便会思考为何两人会说不到一块 不明白对方意思 性格爱好做事风格? 也...

  • freemarker获取html模板进行渲染输出

    freemarker获取html模板进行渲染输出 应用场景 1、获取html文件内容进行模板解析,返回到页面展示2...

  • 爬虫篇之--xpath

    在进行网页抓取的时候,分析定位html节点是获取抓取信息的关键,使用xpath对html进行分析,获取抓取的信息。...

  • python 接口返回的图片存储 base64转码

    接到服务器返回: 需获取图片并存储。需进行base64转码: 打开图片,能正确看到:

  • Glide源码解析之DecodeJob

    前言 DecodeJob的主要工作是从磁盘或者数据源(比如网络)中获取资源,并进行转换和转码。 DecodeJob...

网友评论

    本文标题:Go语言对获取的html进行转码

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