Python爬取網(wǎng)頁Utf-8解碼錯誤及gzip壓縮問題的解決辦法

在我們用python3爬取一些網(wǎng)站時,獲取網(wǎng)頁url后進(jìn)行解析庵芭,在采用decode('utf-8')解碼時有時候會出現(xiàn)utf-8無法解碼的問題妹懒,比如結(jié)果會提示:
Unicode Decode Error: 'utf8' codec can't decode byte 0xb2 in position 0: invalid start byte

這是因為有些網(wǎng)站進(jìn)行了gzip壓縮,最典型的就是sina双吆,進(jìn)行網(wǎng)頁爬蟲經(jīng)常出現(xiàn)這個問題眨唬,那么為什么要壓縮呢?搜狗百科解釋為:
HTTP協(xié)議上的GZIP編碼是一種用來改進(jìn)WEB應(yīng)用程序性能的技術(shù)好乐。大流量的WEB站點(diǎn)常常使用GZIP壓縮技術(shù)來讓用戶感受更快的速度匾竿。這一般是指WWW服務(wù)器中安裝的一個功能,當(dāng)有人來訪問這個服務(wù)器中的網(wǎng)站時蔚万,服務(wù)器中的這個功能就將網(wǎng)頁內(nèi)容壓縮后傳輸?shù)絹碓L的電腦瀏覽器中顯示出來.一般對純文本內(nèi)容可壓縮到原大小的40%.這樣傳輸就快了搂橙,效果就是你點(diǎn)擊網(wǎng)址后會很快的顯示出來.當(dāng)然這也會增加服務(wù)器的負(fù)載*. *一般服務(wù)器中都安裝有這個功能模塊的。
我們在打開某個新浪網(wǎng)頁,點(diǎn)擊右鍵選擇“檢查”区转,然后Network》All》Headers下的“Request Headers”中就會發(fā)現(xiàn)這個字樣:
Accept-Encoding:gzip, deflate, sdch

這個問題有的建議:“看一下設(shè)置的header是否存在 'Accept-Encoding':' gzip, deflate',這一句話苔巨,如果存在,刪除即可解決废离≈对螅”,但是有時候header不存在這個代碼蜻韭,怎么刪除悼尾?如下,我們以打開某個新浪新聞網(wǎng)頁為例:

import BeautifulSoup
url=’http://news.sina.com.cn/c/nd/2017-02-05/doc-ifyafcyw0237672.shtml’req = urllib.request.Request(url)req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0')
page = urllib.request.urlopen(req) # 模仿瀏覽器登錄
txt = page.read().decode('utf-8')
soup = BeautifulSoup(txt, 'lxml')
title =soup.select('#artibodyTitle')[0].text
print(title)```

在run之后仍會出現(xiàn)問題肖方,當(dāng)把*decode('utf-8')*去掉后得到的頁面是亂碼的闺魏。因此,解決的辦法不是如此俯画。
在這里有兩種解決辦法:(1)采用gzip庫解壓網(wǎng)頁再解碼析桥;(2)使用requests庫解析網(wǎng)頁而不是urllib。
(1)的解決辦法為:在“txt = page.read()”頁面讀取之后艰垂,再加入下面這個命令:
txt=gzip.decompress(txt).decode('utf-8')

(2)的解決辦法為:
```import requests
import gzip
url="http://news.sina.com.cn/c/nd/2017-02-05/doc-ifyafcyw0237672.shtml"
req = requests.get(url)req.encoding= 'utf-8'```

這是對網(wǎng)頁用設(shè)置為‘utf-8’的格式泡仗,但是這里模擬瀏覽器登錄需采用這種方式:
headers = { 'Host': 'blog.csdn.net', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', ….}

綜合以上,我們看一下結(jié)果:
***錯誤的方式***
![](https://pic3.zhimg.com/v2-320f90bd0148565e87793b761fe16f5a_b.jpg)***Gzip******解壓方式***
![](https://pic4.zhimg.com/v2-9ada2e1b953f0e7e62ecaaad5e3f5fb3_b.jpg)***Requests******的讀取網(wǎng)頁方式***
![](https://pic2.zhimg.com/v2-1526a346350861679be12011acaafbdd_b.jpg)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末猜憎,一起剝皮案震驚了整個濱河市娩怎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌胰柑,老刑警劉巖截亦,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異柬讨,居然都是意外死亡魁巩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門姐浮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谷遂,“玉大人,你說我怎么就攤上這事卖鲤∩鋈牛” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵蛋逾,是天一觀的道長集晚。 經(jīng)常有香客問我,道長区匣,這世上最難降的妖魔是什么偷拔? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上莲绰,老公的妹妹穿的比我還像新娘欺旧。我一直安慰自己,他們只是感情好蛤签,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布辞友。 她就那樣靜靜地躺著,像睡著了一般震肮。 火紅的嫁衣襯著肌膚如雪称龙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天戳晌,我揣著相機(jī)與錄音鲫尊,去河邊找鬼。 笑死沦偎,一個胖子當(dāng)著我的面吹牛疫向,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播扛施,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼屹篓!你這毒婦竟也來了疙渣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤堆巧,失蹤者是張志新(化名)和其女友劉穎妄荔,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谍肤,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡啦租,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了荒揣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片篷角。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖系任,靈堂內(nèi)的尸體忽然破棺而出恳蹲,到底是詐尸還是另有隱情,我是刑警寧澤俩滥,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布嘉蕾,位于F島的核電站,受9級特大地震影響霜旧,放射性物質(zhì)發(fā)生泄漏错忱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望以清。 院中可真熱鬧儿普,春花似錦、人聲如沸玖媚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽今魔。三九已至勺像,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間错森,已是汗流浹背吟宦。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涩维,地道東北人殃姓。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像瓦阐,于是被迫代替她去往敵國和親蜗侈。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 1 前言 作為一名合格的數(shù)據(jù)分析師睡蟋,其完整的技術(shù)知識體系必須貫穿數(shù)據(jù)獲取踏幻、數(shù)據(jù)存儲、數(shù)據(jù)提取戳杀、數(shù)據(jù)分析该面、數(shù)據(jù)挖掘、...
    whenif閱讀 18,064評論 45 523
  • 聲明:本文講解的實戰(zhàn)內(nèi)容信卡,均僅用于學(xué)習(xí)交流隔缀,請勿用于任何商業(yè)用途! 一傍菇、前言 強(qiáng)烈建議:請在電腦的陪同下猾瘸,閱讀本文...
    Bruce_Szh閱讀 12,685評論 6 28
  • 可以看我的博客 lmwen.top 或者訂閱我的公眾號 簡介有稍微接觸python的人就會知道,python中...
    ayuLiao閱讀 3,097評論 1 5
  • 目錄: Python網(wǎng)絡(luò)爬蟲(一)- 入門基礎(chǔ)Python網(wǎng)絡(luò)爬蟲(二)- urllib爬蟲案例Python網(wǎng)絡(luò)爬...
    一只寫程序的猿閱讀 37,216評論 3 49
  • 縱然《三體》這幾年火的一塌糊涂丢习,國內(nèi)掀起了一陣閱讀科幻小說的浪潮须妻。然至今,我也沒有讀過《三體》泛领,僅僅是對它大概故事...
    novice歡閱讀 322評論 0 0