爬虫异常: 采集到的内容乱码

异常描述

1. 在浏览器上查看源代码发现是正常的
2. 爬虫打印res.txt发现内容是乱码
3. 设置了res.encoding的字符集也没有,还是乱码

可能原因

1. 这种情况下可能是字体加密,但是如果在浏览器中检索文本正常,那就不是字体加密
2. 服务器端对文本进行了压缩,导致打印res.txt是乱码

文本压缩检查和修复

1. 响应头的Content-Encoding字段
    这个基本上没啥用,因为我看其他没有被压缩的页面也存在这个字段,一般值是gzip,当然也可能是其他,用这个确定是否被压缩是没啥太大意义的,但是这个可以作为解压测试的一个方案
2. 尝试gzip解压,gzip是由Content-Encoding来决定的
response = requests.get(url, headers)
with gzip.GzipFile(fileobj=io.BytesIO(response.content)) as gz:
    html_content = gz.read().decode('xxxx')
print(html_content)
3. 也可以在请求头中加入 "Accept-Encoding": "",要求服务器端传递不要进行压缩
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
    "Accept-Encoding": "",
}

url = "xxxxx"
response = requests.get(url, headers=headers)
print(response.text)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值