urllib判断获取数据大小
2019-01-17 本文已影响0人
MA木易YA
urllib包含四个模块:
- urllib.request——请求处理
- urllib.error——异常处理
- urllib.parse——URL处理
- urllib.robotparse——用来解析页面的robots.txt文件
我们这里主要讲一下urllib的request模块里面对网页头信息的处理,我么一般会用urllib.request.urlopen()来对网页请求进行获取,它会返回一个http.client.HTTPResponse类型的对象,并对应有如下方法:
read(),readinto(),getheader(name),getheaders(),fileno()等函数和msg,version、status,reason,debuglevel,closed等属性。
我们这里可以调用里面的getheader()对要下载处理的文件的length进行判断——getheader('Content-Length'),继而避免无法下载时打开无用文件,这里也可以从文件角度出发处理。
类似我们之前QQ音乐爬虫中的处理:
with open(filename, 'wb') as f:
f.write(res.raw.read())
if(urllib.request.urlopen(url).getheader('Content-Length') > 0):
print("成功下载歌曲:{}".format(name.replace("?", "").replace("/", "_").replace("\\", "_").replace("\"", "")))
# size = urllib.request.urlopen(url).getheader('Content-Length')
# print(size)
else:
print("下载失败")
os.remove(filename)