国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Python 筆記六:入門爬蟲坑

源碼github地址在此,記得點星:
https://github.com/brandonxiang/get_html_deflate_gzip


做項目就伴隨著一個問題--數(shù)據(jù)來源。在網(wǎng)絡(luò)數(shù)據(jù)獲取的過程,考慮到數(shù)據(jù)的動態(tài)下載需要爬蟲。這也是必經(jīng)之路吧。

我在運用urllib2做相當(dāng)簡單的爬蟲入門實驗的時候,出現(xiàn)編碼以及壓縮等問題。這一個坑很多人踩過,甚至有人處理編碼問題會出現(xiàn)一種情況,就是5分鐘開發(fā)完成,25分鐘處理編碼問題。更不用說數(shù)據(jù)壓縮,數(shù)據(jù)會面目全非。網(wǎng)頁壓縮主要兩種,區(qū)別可參考gzip和deflate的幾點區(qū)別。

在這里用python舉個栗子,小項目,用urllib2爬網(wǎng)頁十分簡單。

data = urllib2.urlopen(url).read()

網(wǎng)上有各種各樣的解決數(shù)據(jù)壓縮的方法。但是都沒有很完美的解決方案。有些講的是deflate,有的講的是gzip。事實上,網(wǎng)頁壓縮技術(shù)采用deflate的網(wǎng)站已經(jīng)很少,由于國內(nèi)落后的網(wǎng)站還有一個很大保有量,特別是一些政府企事業(yè)的網(wǎng)站。我希望能提供一種兩全齊美的解決方案。

deflate

import zlibdef deflate(data):     try:                       return zlib.decompress(data, -zlib.MAX_WBITS)    except zlib.error:        return zlib.decompress(data)

兩種壓縮格式的解壓方法有很大的差異。

gzip

from gzip import GzipFilefrom StringIO import StringIOdef gzip(data):    buf = StringIO(data)    f = gzip.GzipFile(fileobj=buf)    return f.read()

將兩者結(jié)合寫成一個整合方法

通過對Content-Encoding屬性的判斷,將兩個方法結(jié)合在一起。

import urllib2from gzip import GzipFilefrom StringIO import StringIOimport zlibdef loadData(url):    request = urllib2.Request(url)    request.add_header('Accept-encoding', 'gzip,deflate')    response = urllib2.urlopen(request)    content = response.read()    encoding = response.info().get('Content-Encoding')    if encoding == 'gzip':        content = gzip(content)    elif encoding == 'deflate':        content = deflate(content)    return contentdef gzip(data):    buf = StringIO(data)    f = gzip.GzipFile(fileobj=buf)    return f.read()def deflate(data):    try:        return zlib.decompress(data, -zlib.MAX_WBITS)    except zlib.error:        return zlib.decompress(data)def main():    url = "http://www.szxuexiao.com/"    content = loadData(url)    print contentif __name__ == '__main__':    main()

轉(zhuǎn)載,請表明出處。總目錄Awesome GIS

轉(zhuǎn)載,請表明出處。總目錄后端記事本

微信公眾號
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Python 抓取網(wǎng)頁亂碼原因分析
關(guān)于web壓縮,gzip等
HTTP協(xié)議中你必須知道的三種數(shù)據(jù)格式
HTTP 協(xié)議中你必須知道的三種數(shù)據(jù)格式
PHP的zlib壓縮工具擴展包學(xué)習(xí)
Python爬蟲:一些常用的爬蟲技巧總結(jié)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服