response.text直接用这个的话,是让py猜测页面编码,很多时候返回的都是有问题的,
一般情况下用下面这个就可以解决
response =requests.get(“http://www.baidu.com”)
response.encoding=“utf-8”
print(response.text)
response.content返回的是二进制,如果想要文本的话需要加上content.decode(“utf-8”)这个。
如果是图片什么的,必须要用content,
如果这个还是错误的话,
可以试试这个编码
reponse.content.decode(“unicode_escape”)
不管是通过response.content.decode(“utf-8”)、reponse.content.decode(“unicode_escape”)的方式还是通过response.encoding="utf-8"的方式都可以避免乱码的问题发生
我是使用print(reponse.content.decode(“unicode_escape”)后能返回汉字,但是报新的错:DeprecationWarning: invalid escape sequence ‘/’
爬取的页面里包含很多 \ 双反斜杠, 想replace 出现 invalid escape sequence ‘/‘ 警告
出现警告的原因是 ‘unicode_escape’ 编码不支持 ‘/’ 这样的转义序列。,如果你想要处理 / 这样的转义序列,可以使用 ‘raw_unicode_escape’ 编码来代替 ‘unicode_escape’。‘raw_unicode_escape’ 编码能够处理 ‘/’ 这样的转义序列。下面是修改后的示例代码:
html = etree.HTML(res.text.encode('utf-8').decode('raw_unicode_escape').replace('\\', ''))