html中壓縮過的數據處理
阿新 • • 發佈:2017-06-28
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中壓縮過的數據處理