1. 程式人生 > >html中壓縮過的數據處理

html中壓縮過的數據處理

leo 處理 -a 寫入 zip壓縮 字節流 爬取 get info

要是爬取的內容被壓縮過就

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from StringIO import StringIO
import urllib2
import gzip

# 有些網站不管客戶端支不支持gzip解壓縮,都會返回經過gzip壓縮後的數據,比如 www.qq.com

headers = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36"}
request 
= urllib2.Request("http://www.qq.com/", headers = headers) response = urllib2.urlopen(request) html = "" # 判斷: # 如果響應信息裏Content-Encoding 為gzip,表示響應內容通過gzip進行了壓縮,則對數據進行解壓縮處理 if response.info().get(Content-Encoding) == gzip: # 通過StringIO 獲取壓縮字節流數據 存入內存 data = StringIO(response.read()) # 通過gzip.GzipFile 來解壓數據,返回解壓後的文件對象
f = gzip.GzipFile(fileobj = data) # 保存解壓後的字符串 html = f.read() # 否則直接讀取響應數據 else: html = response.read() # 將數據寫入到磁盤文件 with open("qq.html", "w") as f: f.write(html)

html中壓縮過的數據處理