要是爬取的內容被壓縮過就html
#!/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)