在進行網頁資料抓取時,會遇到壓縮資料,可能主要出於如下考慮:
簡單的防抓取方法
沒有經過分析就對抓取的網頁內容直接進行文字解析,肯定會遇到問題,就像我開始的時候一樣。。。
壓縮資料減少流量
這個一般用於提供資料介面,將資料壓縮後可以大大減少流量
以下提供對抓取資料的處理方法:
檢測反饋內容是否壓縮,並對壓縮內容解壓
檢測資料文字編碼格式,解壓後返回unicode文字
檢測編碼格式所用工具:chardet
# -*- coding: utf-8 -*-
import gzip, stringio, codecs, chardet
from utils import *
def getencoding(txt):
""" 檢查文字內容的編碼方式
"""try:
coding = chardet.detect(txt)['encoding']
if 'none' == coding:
return none
else:
return coding
except exception as ex:
print 'fail getencoding '.format(ex)
return none
def readresponse(resp):
""" 讀取網頁抓取返回內容
"""if resp.getcode() == 200:
encoding = resp.headers.get('content-encoding')
info = resp.read()
if('gzip' == encoding):
print 'read response compress gzip'
try:
gf = gzip.gzipfile(fileobj=stringio.stringio(info), mode="r")
info = gf.read()
except exception as ex:
print 'fail read response, gzip'
info = ''
if info!='':
# 刪除bom頭
info = info.strip(codecs.bom_utf8)
code = getencoding(info)
if code:
info = info.decode(code)
print 'read response, encoding '.format(code)
else:
print 'fail parse text encode'
return info
handling compressed data
關於 content-encoding: gzip
posted by lynnliu
jun 6th, 2013 python
apache 開啟Gzip網頁壓縮
下面就是就是要講解如何開啟gzip壓縮 例項環境 伺服器 centos6.5 apche 2.2.15 gzip壓縮需要 deflate module和headers module的支援 系統預設就是開啟的 需要做的是在httpd.conf配置項新增規則 root iz28qa8jt4uz conf...
利用GZIP壓縮網頁相關知識
的訪問速度是由多個因素所共同決定的,這些因素例如應用程式的響應速度 網路頻寬 伺服器效能 與客戶端之間的網路傳輸速度等等。其中最重要的乙個因素是應用程式本身的響應速度,因此當你為 效能所苦惱時,你第乙個需要著手進行處理的便是盡可能的提公升應用程式的執行速度,你可以使用快取或者是優化 的執行效率來提公...
配置Httpd的gzip壓縮網頁
1.開啟firefox瀏覽器的開發工具 2.配置httpd的gzip壓縮頁面 在errorlog logs error log 的後面新增配置 檢查配置檔案是否錯誤 配置後要重啟httpd服務 引數名稱 引數說明 setoutputfilter deflate 啟動gzip壓縮功能 deflatec...