python爬蟲抓下來的網頁,中間的中文亂碼怎麼解決?
01-28
特別簡單的一個爬蟲
# -*-coding:utf-8 -*-
import urllib
import urllib2
import reurl = "http://cuiqingcai.com/990.html"
request = urllib2.Request(url)
response = urllib2.urlopen(request)
print response.read()用命令行提示符運行,中文為亂碼,怎麼解決?求教各位大神
問題快解決啦。。。找個個比較詳細的博客,仔細看了下。
小夥伴們要避免出現我這樣的問題,要首先看一下超鏈接是什麼編碼方式:&
我趴的網址charset=gbk。utf-8,不一致,所以中文亂碼了。
有類似困擾的小夥伴,可以去這個網址看看:http://www.crifan.com/summary_python_2_x_common_string_encode_decode_error_reason_and_solution/問題解決了。。。媽媽呀的修改了一下pycharm的編譯設置就正常了。
Python代碼里的中文
- 代碼第一行(如果有腳本標記則是第二行)可以按照PEP8形式指定本代碼文件的編碼類型。若不指定則按照ascii(py2.x)或utf-8(py3)
你需要了解的內容
- 清楚知道包含中文的文件是用的什麼編碼
- 清楚知道自己輸出端(命令行?html?GUI?)用什麼編碼
- 清楚知道編碼的基本知識
你需要的python相關內容
以python2.7.x為例:
- print/file.write等實質上只輸出str對象,如果輸出內容不是str對象,則使用str函數進行轉換
- str函數是個殼,實質是調用對象方法__str__
- encode函數是將一個unicode類按照指定的編碼(如果不指定則使用defaultencoding)轉換為不帶編碼標記的str類
- decode函數是將一個str類按照指定編碼(如果不指定則使用defaultencoding)轉換為使用utf-8編碼的unicode類
- 直接print一個容器(dict/list/tuple)的時候不會對其中的字元串進行編碼,因此看到的非ascii字符集內容將會以xAA或者uAAAA之類的形式輸出
Python3中,str行為與py2的unicode行為一致;bytes行為與py2的str行為一致。
Python寫程序原則是所有進來的字元串(讀文件,爬網頁),一進來就decode,處理完之後在要輸出的地方在encode。題主讀入(read)和輸出(print)在一行里,要在win下面想不出錯就這麼寫print response.decode("utf-8").encode("gbk")
python2 無非是decode 和encode 請搜索一下黃哥寫的文章。
python3裡面編碼問題簡單很多
推薦閱讀: