在爬百度"今日熱點事件排行榜"的時候發現打印在控制檯的中文所有顯示亂碼,開始懷疑控制檯的緣由致使了亂碼,後來輸出一箇中文,發現顯示正常。html
#-*- coding:utf-8 -*- import requests from bs4 import BeautifulSoup res = requests.get("http://top.baidu.com/buzz?b=341&fr=topbuzz_b1&qq-pf-to=pcqq.discussion") soup = BeautifulSoup(res.text,'lxml') print(soup.head.title.text)
執行代碼控制檯返回一串亂碼ui
查看網頁的源碼發現網頁的編碼方式gbk,BeautifulSoup解析後獲得的soup,打印出來是亂碼,實際上其自己已是正確的(從原始的GB2312編碼)解析(爲Unicode)後的了。之因此亂碼,那是由於,打印soup時,調用的是__str__,其默認是UTF-8,因此輸出到GBK的cmd中,才顯示是亂碼(參考一些文章)編碼
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
#-*- coding:utf-8 -*- import requests from bs4 import BeautifulSoup res = requests.get("http://top.baidu.com/buzz?b=341&fr=topbuzz_b1&qq-pf-to=pcqq.discussion") res.encoding = 'gb18030' soup = BeautifulSoup(res.text,'lxml') print(soup.head.title.text)