python urllib 使用总结,pythonurllib,import urlli


import urlliburl = "http://byrx.net/"#urlopen()sock = urllib.urlopen(url)htmlCode = sock.read()sock.closefp = open("e:/1.html","wb")fp.write(htmlCode)fp.close#urlretrieve()urllib.urlretrieve(url, 'e:/2.html')

urlopen()urlretrieve()都可以抓取网页内容,但:urlopen是先打开,然后就像操作本地文件一样读取或操作,提供的读取模式有:read(),readline(),readlines() ;其他一个重要的可用方法有:

info():返回一个httplib.HTTPMessage 对象,远程服务器的头信息;getcode():返回状态,200=成功/404=未找到;

而urlretrieve却是直接下载保存,当然,如果没有指定保存路径,那默认会保存在系统临时目录中。另外,查看库文件看到,urlretrieve()的形参有:urlretrieve(url, filename=None, reporthook=None, data=None) 其中reporthook 指的是回调函数,即可以实时打印出Url的下载进度!如:

下载进度

def rpb(blocknum, blocksize, totalsize):    percent = 100.0 * blocknum * blocksize / totalsize    if percent > 100:percent = 100    print "%.2f%%"% percenturllib.urlretrieve("http://www.w3.org/Protocols/", 'e:/w3.html',rpb)

但是对于rpb()参数 totalsize 是否有值,要看header中是否存在键:Content-Type,可通过 urllib.urlopen(url).info(),如果没totalsize =-1 ,进度显示就不正确了。

HTTP服务器头信息:

header

评论关闭