用requests獲取源代碼時,如果是中文網頁,就可能會出現亂碼,下面我以中關村的網站為例:
import requests url = 'http://desk.zol.com.cn/meinv/' r = requests.get(url) print r.text
執行上面這個腳本你會看到中文部分都變成亂碼。
print r.encoding
通過上面的代碼你會發現從requests獲取到的編碼是ISO-8859-1,而該網頁的編碼是gb2312,所以打印出來的編碼就都變成亂碼了,那么該如何解決這個問題呢?
其實只需將編碼設為gb2312即可,完整的代碼如下:
import requests url = 'http://desk.zol.com.cn/meinv/' r = requests.get(url) r.encoding = 'gb2312' print r.text
有些童鞋喜歡用content來獲取源代碼,如果直接將上面代碼中的text改為content的話,你會發現獲取到的源代碼依舊是亂碼,所以上面的代碼不適用於content方式獲取源代碼。
通過content獲取源代碼的童鞋可以看這里:
import requests from lxml import etree url = 'http://desk.zol.com.cn/meinv/' r = requests.get(url) code = r.content.decode('gb2312') print code