WebClient WebHttpRequest 返回结果乱码

这篇博客介绍了在进行网页抓取时遇到GZIP压缩内容导致的乱码问题,并提供了一个VB.NET的函数`GetHtml`来正确解压并读取内容。通过设置请求头和使用GZipStream进行解压,成功解决了乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在做个网抓时,用各种工具调试出来的结果都是正确的,上VS获得结果的时候一直出现乱码啊~

都要崩掉了,后面发现返回的GZIP加密的,于是用了下面的方法,轻松搞定~愉快!

   

 Function GetHtml(url)
        Dim req As Net.HttpWebRequest = Net.HttpWebRequest.Create(url)
        req.AllowAutoRedirect = False
        req.Method = "Get"
        req.ContentType = "text/html,application/x-www-form-urlencoded"
        'req.Connection = "keep-alive"
        req.Headers.Add("sec-ch-ua-platform", "Windows")
        req.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 Edg/98.0.1108.55"
        req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
        req.KeepAlive = True
        req.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br")
        req.Headers.Add(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9")
        Dim response As HttpWebResponse = req.GetResponse()
        Dim result As String = ""
        If response.ContentEncoding.ToLower() = "gzip" Then
            Dim streamRescive As Stream = response.GetResponseStream()
            Dim ZipStream = New GZipStream(streamRescive, CompressionMode.Decompress)
            Dim streamReader = New StreamReader(ZipStream, Encoding.Default)
            result = streamReader.ReadToEnd()
        Else
            result = New IO.StreamReader(response.GetResponseStream(), encoding:=Encoding.Default).ReadToEnd()
        End If
        Return result
    End Function

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值