Python requests响应数据乱码问题处理

# !/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""
@des     :Python 爬虫过程中编码乱码问题解决,
			默认情况况下,requests会自动从响应头和响应体中解析编码方式,解析失败会赋个默认编码格式 ISO-8859-1,所以导致遇到GBK等编码时出现乱码,以下get_encodin通过相同原理,获取编码方式,成功率显著提高
"""
import chardet
import requests
import re


def get_encoding(response_obj:object)->str:
    """
    Automatically parse web page encoding
        First parse the charset from the response header
        Then parse from the response data
    :param response_obj: REQUEST RESPONSE OBJECT
    :return: Coding
    """
    charset_header = response_obj.headers["Content-Type"]
    pattern_charset_header = re.compile('charset=(.*)', re.I)
    charset = re.search(pattern_charset_header, charset_header)
    if charset is not None:
        return charset.groups()[0]
    else:
        charset = chardet.detect(response_obj.content)["encoding"]
        return charset


url = "http://news.inewsweek.cn/society/2022-05-30/15753.shtml"
res = requests.get(url)
res.encoding = get_encoding(res)
print(res.text)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值