天天看點

python爬蟲中文網頁cmd列印出錯問題解決

用python寫爬蟲,很多時候我們會先在cmd下先進行嘗試。

運作爬蟲之後,肯定的,我們想看看爬取的結果。

于是,我們print...

運氣好的話,一切順利。但這樣的次數不多,更多地,我們會遇到這樣的錯誤:

好吧,回去檢查網頁的編碼格式:<code>gb2312</code>

代碼中也添加了:<code>r.encoding = 'gb2312'</code>

看不出哪裡出了問題,應該沒問題的啊!

代碼如下:

網上查,都說是cmd控制台的問題。預設控制台編碼gbk

好吧,那就改一下控制台編碼,改成gbk的超集gb18030

試試看再說。。。嗯,很好,無報錯,但是有亂碼,算是解決了問題!

順着這個思路,再一想,改控制台編碼那還不如直接改字元編碼:<code>r.encoding = 'gb18030'</code>

試試看再說。哎,沒問題了,無報錯,無亂碼,完美解決!

從ASCII、GB2312、GBK到GB18030,這些編碼方法是向下相容的,即同一個字元在這些方案中總是有相同的編碼,後面的标準支援更多的字元。

各種編碼字元數目

gb2312: 7445 -- 在windows中的代碼頁是CP936

gbk: 21886 -- 在windows中的代碼頁是CP936

gb18030: 27484 -- 在windows中的代碼頁是CP54936

gb13000: 等同于unicode

顯然,gb18030 是 gb2312,gbk 的超集

是以,解決問題的思路就是:

如果控制台中,列印中文文本出問題,那就用它的編碼的超集進行編碼。