使用urllib爬取壓縮過的網頁

2021-08-20 20:17:12 字數 1349 閱讀 2135

最近在使用urllib爬取網頁的時候發現乙個非常奇怪的問題,就是使用瀏覽器或者postman都可以正常訪問的乙個網頁,但是使用urllib的話獲取到的網頁資訊都是亂碼,無論使用utf-8解碼還是使用gbk解碼都不行。

原始**:

text = opener.open(request).read()排除錯誤的過程

首先懷疑web page本身有問題,使用瀏覽器和postman,結果都能開啟

其次懷疑**問題,換成requests module,沒有問題,可以正常獲取

response = requests.request('get', url, headers=headers)
但問題是我這裡整個爬蟲的框架都是用的是urllib,而且對於大多數web(幾乎所有了)都是可以的。為什麼偏偏對某些不行呢?總不能為了這乙個來修改整體的**吧。

繼續鑽研:

發現postman顯示,accept-encoding: gzip,猜想難道web發過來的時候是壓縮過的資料。那麼試一下解壓縮呢,於是將上面的**修改為

html = zlib.decompress(text, 16+zlib.max_wbits)這裡的改動是加入乙個一行,使用zlib來解壓縮收到的資料,測試一下,完美解決之前的亂碼問題

python使用urllib2抓取防爬取鏈結

寫了那麼多篇找工作的文章,再寫幾篇就完了,也算是對自己一段時間的乙個總結。近來發現自己部落格上python技術點的文章有點少,為了防止自己總是遺忘,還是寫出來的好。前幾天剛看完 linux unix設計思想 真是一本不錯的書,推薦想提高自己 質量的童鞋看一下,裡面經常提到要以小為美,乙個程式做好一件...

使用urllib爬取百度貼吧

博主是新手,只是做個筆記,不好勿噴 手動輸入主題,並爬取目標主題內容的前三頁 爬取之後儲存在html檔案當中 第一步建立乙個類,類中定義三個函式,分別為主函式 爬取函式和儲存函式。第二步找到相應的請求頭以及url,為防止將url寫死,觀察url組成部分,為最終進行相應的拼接做準備。第三步手動設定輸入...

Python使用urllib2爬取百度百科

url管理器主要用來管理要爬取的url,放置重複爬取 輸出,將解析後的資料輸出儲存起來 以下為 示例 1.url管理器 管理要爬取的url class urlmanager object def init self 未爬取過的url self.new urls set 已爬取到的url self.o...