爬虫返回乱码以及解决办法以及锟斤拷、ISO-8859-1转码、&#、&#x转码、unicode转码,gbk转码,ascii转码、gb2312转码

一、headers去掉后面的br或者 注释Accept-Encoding在这里插入图片描述

注销设置Accept-Encoding为gzip,deflate,返回的网页是乱码

����g�/1�C�y�/�D�O��'��

self.headers = {
	...
	# 'Accept-Encoding': 'gzip, deflate, br',
	'Accept-Encoding': 'gzip, deflate, br',
	'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
}

二、锟斤拷

是一串经常在搜索引擎页面和其他网站上看到的乱码字符。乱码源于GBK字符集和Unicode字符集之间的转换问题。
在这里插入图片描述在这里插入图片描述

  • requests解决方案:
    import requests
    url = ''https://www.baidu.com/'
    res = requests.get(url)
    res.encoding=res.apparent_encoding  #获取网页正确的编码格式
    print(res.text)
    
  • scrapy 解决方案
    res =(request.text).encode('cp1252').decode('gbk')
    
三、utf8 编码,请求输出为乱码, 文章实际编码为ISO-8859-1在这里插入图片描述

输出情况如下 新疆博湖县:博爱送万家暨迎
解决办法 res.content.decode('utf-8')

self.headers = {
	'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',
	'Accept-Encoding': 'gzip, deflate',
	'Accept-Language': 'zh-CN,zh;q=0.9',
	'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',
}
uri = 'http://www.xj.chinanews.com/dizhou/2019-01-16/detail-ifzcufai2316598.shtml'
res = requests.get(url=uri, headers=self.headers)
print(res.encoding)  查看编码方式
print(res.content.decode('utf-8'))
四、gb2312

在这里插入图片描述
添加’ignore’可以自动忽略编码错误,屏蔽掉一些个别字符不能编码的错误提示

CONT = resp.text.encode('cp1252').decode('gbk', 'ignore')
五、&#、&#x开头的字符串转换成中文

&#开头,后接十进制数字,&#x开头,后接十六进制数字。

import html
y = '93831'
print(html.unescape(y))
93831
六 utf8 转码 gbk 转码
s = '你好'
a = s.encode('utf8')
# b'\xe4\xbd\xa0\xe5\xa5\xbd' 6字节
b = s.encode('gbk')
# b'\xc4\xe3\xba\xc3’ 4个字节

python把gdb格式的文本文件转为utf-8的格式
content.decode("gbk").encode("utf8")
unicode与ascii互转

涉及函数:ord()与 chr()、unichr()

总结
  • res = requests.get(url, headers=self.headers)
    1. 先查看返回的编码
    print(res.encoding)
    2. 进行编码
    print(res.content.decode('utf8'), 'ignore')
    
  • gbk转化成utf-8:���

  • utf-8转化成gbk:锟斤拷锟�

  • 进制的表示方法

    前缀表示法进制后缀表示法进制
    十六进制0xH十六进制数
    十进制无前缀D 或 省略十进制数
    八进制0Q八进制数
    二进制没有表示符号B二进制数

如果帮到你请点赞或者评论, 谢谢让我看到你

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风华浪浪

讨个老婆本呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值