当前位置:   article > 正文

爬虫返回乱码以及解决办法以及锟斤拷、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'
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

二、锟斤拷

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

  • requests解决方案:
    import requests
    url = ''https://www.baidu.com/'
    res = requests.get(url)
    res.encoding=res.apparent_encoding  #获取网页正确的编码格式
    print(res.text)
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • scrapy 解决方案
    res =(request.text).encode('cp1252').decode('gbk')
    
    • 1
三、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'))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
四、gb2312

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

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

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

import html
y = '93831'
print(html.unescape(y))
93831
  • 1
  • 2
  • 3
  • 4
'
运行
六 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")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
unicode与ascii互转

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

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

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

  • 进制的表示方法

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

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

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号