Python爬蟲起步 一步步解決中文亂碼顯示

2021-07-05 15:06:43 字數 1934 閱讀 9560

昨天開始看py爬蟲的資料,搞了一晚上還是沒搞定,最後發現是挑了個最蛋疼的**導致的,換個url位址早不知看到哪一章了。為了紀念充實的一天,特意來寫一篇部落格紀念下。

好吧,首先要說明我挑的是nga**

然後是標準的呼叫requests抓取頁面源**

最簡式:

import requests

html=requests.get('')

print html.text

這是requests的標準用法,能抓取一些最簡單的英文網頁。返回結果是:

unicodeencodeerror:『gbk' codec can't encode character u'/xee' in position 485:illegal multibyte sequence.

簡單的說,就是頁面中有個字元』/xee』無法解碼。

好吧翻了不少帖子之後,才知道不同**的字元編碼是不一樣的,此處nga的原始碼表示他們用的是gbk編碼,與python2.0預設的unicode不相同。

#coding=utf-8

import requests

html=requests.get('')

print html.text

在首行加入宣告,調整為utf-8編碼格式。此時這個**已經能抓取部分我們日常使用的**了,比如知乎。

但是對於nga,依然是哪個熟悉的

unicodeencodeerror:『gbk' codec can't encode character u'/xee' in position 485:illegal multibyte sequence.

此時這個程式依然只能識別utf-8格式的網頁,還是不能消化gbk編碼的那些網頁。

所以,我們需要對其進行重編碼

抓+

#coding=utf-8

import requests

html=requests.get('')

print html.text.encode('gb18030')

在輸出時對輸出的字元以gb18030的格式進行重編碼,因為gb18030>gbk>gb2312,所以對於所有按照gbk編碼的網頁,使用gb18030是穩妥的。

這裡網上有不少人喜歡用

import sys

reload

(sys)

sys.setdefaultencoding

('utf-8')

這樣的**,但是參考這是最不推薦的方式。

用抓++的方式,我們已經可以處理絕大部分的網頁,比如我嘗試的chihpell,在其源**中標示編碼方式為gbk。

但是回到nga,我們發現已經能成功的抓取下來**,但是中文部分不能像chipehll那樣正確的顯示,而是顯示為各種亂碼。

於是我在最後的print語句之上加了一句

print html.encoding
來檢視nga的網頁到底用的什麼編碼格式,結果是

iso-8859-1

傳說中的說一套做一套,**中的』charset=gbk』完全沒對上,實際上nga的頁面源**中是用iso-8859-1編碼格式對中文進行編碼的!

抓nga

#coding=utf-8

import requests

url=''

html=requests.get(url)

#print html.encoding

print html.text.encode('iso-8859-1')

終於抓出了nga的**,不容易啊,看了大概二十來篇文章,填鴨式學習了一堆關於編碼方式、中文編碼、print輸出的內容,最後發現其實有篇文章裡講到過先識別網頁編碼格式再做輸出的內容。

一步步學Webpack4(0) 實戰起步

最近由於學習需求,手擼了個簡單的spa框架並使用webpack4做打包和預覽除錯,由於沒有怎麼系統學習過webpack所以遇到坑挺多,索性直接開始從頭學一波順便記錄下來.寫webpack文章不寫版本都是耍流氓,這篇文章基於當下最新的webpack v4.22.0以及webpack cli v3.1....

一步步學ROS

最近因為看svo的 裡面用到catkin決定要好好看ros,年前學會基本操作。啟動節點 rosrun package name executable name 檢視節點 rosnode list 注 rosout 節點是乙個特殊的節點,通過 roscore 自動啟動 檢視特定節點的資訊 rosnod...

windows Thrift c 一步步搭建

1.thrift 原始碼路徑 2.libevent原始碼路徑 3.boost路徑 安裝 conan install boost 1.68.0 conan stable 4.openssl路徑 安裝 conan install openssl 1.1.1a conan stable conan安裝bo...