有一部分网站,使用 Requests 请求完以后拿到的网页源代码会发生乱码问题,这类问题其实本质是使用了错误的编码方式进行了解析,只不过 Requests 模块有一个使用错误编码的过程,如图是 Requests 官网对编码部分的解释:
那么针对这类产生问题的网站,我们提出以下解决方式,在此我以中国新闻网为例,为大家剖析:
import requests
URL = 'https://www.chinanews.com/'
response = requests.get(url=URL)
print(response.text)
我们发现按照上文讲述的 Requests 模块的使用来请求中国新闻网,程序的结果中出现了很多我们不认识的符号,这其实就是乱码,怎么解决呢,请看下图:
很明显,我们这里遇到的问题是符号码,产生原因就是以 ISO8859-1 方式读取了 UTF-8 编码的中文,我们将其解析回来即可。正确源代码如下:
import requests
URL = 'https://www.chinanews.com/'
response = requests.get(url=URL)
response.encoding = 'utf-8'
print(response.text)
只需要从服务器的响应数据中使用正确的编码方式解析即可,在使用字符串类型的网页源代码之前添加:response.encoding = 'utf-8'
,经过对原始数据的修改,乱码问题就能够解决掉。