今天就跟大家聊聊有关使用urlretrieve()函数怎么下载网络文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
源码
# !/usr/bin/env python # -*- coding:utf-8 -*- """ 图片(文件)下载,核心方法是 urllib.urlrequest 模块的 urlretrieve()方法 urlretrieve(url, filename=None, reporthook=None, data=None) url: 文件url filename: 保存到本地时,使用的文件(路径)名称 reporthook: 文件传输时的回调函数 data: post提交到服务器的数据 该方法返回一个二元元组("本地文件路径",<http.client.HTTPMessage对象>) """ import requests import urllib.request from lxml import etree def crawl(): url='http://www.ivsky.com/tupian/haiyangshijie/' headers={ "User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36", } resp=requests.get(url,headers=headers) if resp.status_code==200: resp.encoding='UTF-8' html=etree.HTML(resp.text) img_titles=html.xpath('//ul[@class="ali"]//a/@title') img_urls=html.xpath('//ul[@class="ali"]//a/img/@src') data=zip(img_titles,img_urls) for img_title,img_url in data: print('开始下载{title}.jpg'.format(title=img_title)) result=urllib.request.urlretrieve(img_url, filename='../../data/图片下载爬虫/{title}.jpg'.format(title=img_title), reporthook=loading, data=None) # print(result) def loading(blocknum,blocksize,totalsize): """ 回调函数: 数据传输时自动调用 blocknum:已经传输的数据块数目 blocksize:每个数据块字节 totalsize:总字节 """ percent=int(100*blocknum*blocksize/totalsize) if percent>100: percent=100 print("正在下载>>>{}%".format(percent)) import time time.sleep(0.5) if __name__ == '__main__': crawl()
看完上述内容,你们对使用urlretrieve()函数怎么下载网络文件有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。