requests.get()爬去中文網頁亂碼解決方法

Fork Woo發表於2019-02-01

requests.get()爬去中文網頁亂碼解決方法

當我們使用requests.get()爬取百度首頁時會發現,返回的html程式碼中的中文發生亂碼。

import requests

headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
url = 'http://www.baidu.com'
html = requests.get(url, headers = headers)
print(html.text)

發現下圖中中文位置出現亂碼。
在這裡插入圖片描述
對原始碼分析發現原始碼是以’utf-8’編碼的。
以下提供兩種思路:1.將get到的結果再用’utf-8’編碼,之後獲取text屬性。官網給出的解決方法。2.對get返回結果的text屬性以’latin-1’編碼,再用’utf-8’解碼。
1.

import requests

headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
url = 'http://www.baidu.com'
html = requests.get(url, headers = headers)
html.encoding = 'utf-8'
print(html.text)

在這裡插入圖片描述
2.

import requests

headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
url = 'http://www.baidu.com'
html = requests.get(url, headers = headers)
print(html.text.encode('latin-1').decode('utf-8'))

在這裡插入圖片描述

相關文章