在看《Dive Into Python》有一章是對XML的處理,其中寫着
import sys
sys.setdefaultencoding('iso-8859-1')
而我使用urlopen寫一個采集小程式時,遇上了一個編碼問題。以抓取百度首頁為例:
當列印htmlSource時,會發現出現亂碼的情況了,原因是百度預設的編碼是gb2312,而python預設的編碼格式為ascii(可通過列印sys.getdefaultencoding() 顯示出來)
為什麼import sys後,然後使用sys.不會自動提示顯示出setdefaultencoding呢?之後搜尋了一下:
python的初始化腳本site.py會把sys子產品的setdefaultencoding方法删除,python在初始化完畢之後,禁止使用者改變預設編碼。
還有就是在抓取到頁面後,需要對頁面進行一個解碼動作(decode),完整的demo代碼将會如下所示: