今天群里有個人反映某個網址爬出來的網頁源代碼出現中文亂碼,我研究了半天,終於找到了解決方法。
一開始,我是這樣做的:
import requests url = 'http://search.51job.com/jobsearch/search_result.php?fromJs=1&jobarea=090200%2C00&funtype=0000&industrytype=00&keyword=python&keywordtype=2&lang=c&stype=2&postchannel=0000&fromType=1&confirmdate=9' print requests.get(url).content
這樣做,如果用命令行去運行,得到的內容中文顯示正常,但如果用pycharm運行得到的確實亂碼。
這個問題我一時半會還不知道是為什么,如果有人知道,請告訴我,謝謝!
后來,我在網上查閱資料,發現可以通過下面這種方式解決中文亂碼問題:
首先,我們在瀏覽器中打開網址,通過查看源代碼可以發現這個網址采用的編碼是GBK:
然后我們通過下面這段代碼發現通過requests獲取的編碼不是GBK,而是ISO-8859-1。
import requests url = 'http://search.51job.com/jobsearch/search_result.php?fromJs=1&jobarea=090200%2C00&funtype=0000&industrytype=00&keyword=python&keywordtype=2&lang=c&stype=2&postchannel=0000&fromType=1&confirmdate=9' print requests.get(url).encoding
所以打印出來的就是亂碼,我們需要將編碼改為GBK才可以:
import requests url = 'http://search.51job.com/jobsearch/search_result.php?fromJs=1&jobarea=090200%2C00&funtype=0000&industrytype=00&keyword=python&keywordtype=2&lang=c&stype=2&postchannel=0000&fromType=1&confirmdate=9' r = requests.get(url) r.encoding = 'GBK' print r.text
這樣做,無論你是用pycharm還是命令行去運行,得到的都是正常的中文了。