获得response.text有如下类似的乱码:
<meta property="og:site_name" content="快��" />
解决方法有两种:
第一种:
#response.apparent_encoding 从内容中分析出响应内容的编码方式
response.encoding = response.apparent_encoding
apparent_encoding方法是requests库利用chardet对字节流编码进行了猜测。一般来说使用这种方法,大部分网页的中文乱码都会恢复。如果还是不行,那就试试第二种方法。
第二种:
#<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
text = response.content.decode('utf-8','ignore')
从网页格式中获得网页内容的编码方式(一般content-type字段会出现在HTML的header的头几行)。
如果直接拿来用,会报错
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb6 in position 3536: invalid start byte
所以需要给decode加上第二个参数,decode([encoding], [errors='strict']), 第二个参数设置为ignore,则会忽略非法字符。
这样就能获得正确的中文内容了。
网友评论