Python练习:zlib和urllib的依赖库使用

  • 使用python zlib进行字符串压缩

命令

  • 字符串:使用zlib.compress可以压缩字符串。使用zlib.decompress可以解压字符串。
  • 数据流:压缩:compressobj,解压:decompressobj

案例

>>> import zlib
>>> s = 'slfsjdalfkasflkkdkaleeeeeeeeeeeeeeeeeeeeeeeeeeeelaaalkllfksaklfasdll  kkkkkk123'
>>> zlib_s = zlib.compress(s)
>>> zlib_s
'x\x9c}\xca\xb1\r\xc0 \x10\x04\xc1Vh\xc1\xb8\xa2\x93\x9e\x0f|\x9b]\xff\x92\x11\x050\xf1\x84\xceW\xa2\xad4vY\xac\x0b$a\xf6\x8fL+\x05c\xf8x\xe6\xfb\x03\xf7\x97\x1e\xd1'

>>> print tlen(s)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'tlen' is not defined
>>> print len(s)
79
>>> print len(zlib_s)
55
>>> ss = zlib.decompress(zlib_s)
>>> ss
'slfsjdalfkasflkkdkaleeeeeeeeeeeeeeeeeeeeeeeeeeeelaaalkllfksaklfasdll  kkkkkk123'

压缩与解压缩文件

 

import zlib
def compress(infile, dst, level=9):
    infile = open(infile, 'rb')
    dst = open(dst, 'wb')
    compress = zlib.compressobj(level)
    data = infile.read(1024)
    while data:
        dst.write(compress.compress(data))
        data = infile.read(1024)
    dst.write(compress.flush())
def decompress(infile, dst):
    infile = open(infile, 'rb')
    dst = open(dst, 'wb')
    decompress = zlib.decompressobj()
    data = infile.read(1024)
    while data:
        dst.write(decompress.decompress(data))
        data = infile.read(1024)
    dst.write(decompress.flush())
    
if __name__ == "__main__":
    infile = "1.txt"
    dst = "1.zlib.txt"
    compress(infile, dst)
    
    infile = "1.zlib.txt"
    dst = "2.txt"
    decompress(infile, dst)
    print "done~"

 

注:compressobj返回一个压缩对象,用来压缩不能一下子读入内存的数据流。 level 从9到-1表示压缩等级,其中1最快但压缩度最小,9最慢但压缩度最大,0不压缩,默认是-1大约相当于与等级6,是一个压缩速度和压缩度适中的level。

 

  • 使用python获取一个网页的源码

实现思路:

  1. 使用 urllib获取网页源码。
  2. 使用open打开本地文件并写入数据。

 输出本地的数据内容

# coding=UTF-8

import urllib
url = 'https://blog.csdn.net/alice_tl'
wp = urllib.urlopen(url)
file_content = wp.read()

print file_content
#第一部分为获取网页源码

fp = open('alice.txt', 'wb') #打开一个文本文件
fp.write(file_content) #写入数据
fp.close() #关闭文件
#第二部分为将网页内容存入文件中

#第三部分为利用正则表达式将文件内容打印出来
import re

fp = open('alice.txt', 'rb')
content = fp.read()
fp.close()

title = re.search('<title>(.*?)</title>', content, re.S).group(1)

print 'title = ', title + '\n'

hrefPatten = 'href="(.*?)"'
hrefC = re.findall(hrefPatten, content, re.S)  #返回所有匹配正则表达式的值于列表中

print 'Allhref = ', hrefC

for h in hrefC :
    print h

最终输出的alice.txt内容如下:

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:blogdevteam 返回首页