最近打算弄弄网站的SEO的相关事情,在最开始碰到了一个比较奇怪的问题,记录一下。
碰到的问题:用python的requests抓取网站,返回乱码。
import requests
url = "http://127.0.0.1/a.html"
response = requests.get(url=url)
print(response.text)
a.html内容
虎虎管家 - 拼多多商品搬家
打印出来的结果
文章图片
image.png 乱码!
这个是因为requests的默认编码是 ISO-8859-1,如果指定编码为utf-8,那么可以正确返回结果
response.encoding='utf-8'
但是,requests本身是会基于响应包的头部编码正确设置的,显然是我的网页不够完美,导致需要requests需要强制设置编码。
看了一下返回包的header,果然没有指定编码
文章图片
image.png 这就很奇怪了,在代码里面已经定义了charset=utf-8,为什么不能生效呢,浏览器里面看到的是正确的。
【网页编码】原来,这里其实是两个不同的编码(https://www.ibm.com/developerworks/cn/web/wa-lo-ecoding-response-problem/index.html
)
1)通知浏览器编码:
通过设置这个编码,告诉浏览器该用哪个编码
2)响应编码:
在web-server设置(针对静态资源,后端服务可以在代码里面设置)
所以只需要在nginx的配置里面添加就可以了。
charset utf-8;