使用urllib库的urlretrieve()方法下载网络文件到本地的方法


Posted in Python onDecember 19, 2018

概述

见源码

源码

# !/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()

运行结果

开始下载海里的海龟图片.jpg
正在下载>>>0%
正在下载>>>100%
开始下载绮丽的海底世界图片.jpg
正在下载>>>0%
正在下载>>>43%
正在下载>>>87%
正在下载>>>100%
开始下载可爱的海豹图片.jpg
正在下载>>>0%
正在下载>>>50%
正在下载>>>100%
开始下载不同的海星图片.jpg
正在下载>>>0%
正在下载>>>63%
正在下载>>>100%
开始下载可爱的水母图片.jpg
正在下载>>>0%
正在下载>>>100%
开始下载活泼可爱的海豚图片.jpg
正在下载>>>0%
正在下载>>>47%
正在下载>>>95%
正在下载>>>100%
开始下载阳光下的海胆壳图片.jpg
正在下载>>>0%
正在下载>>>63%
正在下载>>>100%
开始下载海洋中的水母图片.jpg
正在下载>>>0%
正在下载>>>56%
正在下载>>>100%
开始下载千姿百态的海螺图片.jpg
正在下载>>>0%
正在下载>>>62%
正在下载>>>100%
开始下载水族馆里的水生动植物图片.jpg
正在下载>>>0%
正在下载>>>46%
正在下载>>>93%
正在下载>>>100%
开始下载水母图片.jpg
正在下载>>>0%
正在下载>>>100%
开始下载海星摄影图片.jpg
正在下载>>>0%
正在下载>>>79%
正在下载>>>100%
开始下载五彩斑斓的海洋鱼群图片.jpg
正在下载>>>0%
正在下载>>>29%
正在下载>>>59%
正在下载>>>89%
正在下载>>>100%
开始下载漂亮的贝壳图片.jpg
正在下载>>>0%
正在下载>>>39%
正在下载>>>79%
正在下载>>>100%
开始下载海底水母图片.jpg
正在下载>>>0%
正在下载>>>82%
正在下载>>>100%
开始下载海底的珊瑚图片.jpg
正在下载>>>0%
正在下载>>>48%
正在下载>>>97%
正在下载>>>100%
开始下载海星高清图片.jpg
正在下载>>>0%
正在下载>>>25%
正在下载>>>50%
正在下载>>>75%
正在下载>>>100%
开始下载色彩鲜艳的热带海洋鱼图片.jpg
正在下载>>>0%
正在下载>>>63%
正在下载>>>100%

使用urllib库的urlretrieve()方法下载网络文件到本地的方法

以上这篇使用urllib库的urlretrieve()方法下载网络文件到本地的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
pycharm 使用心得(八)如何调用另一文件中的函数
Jun 06 Python
python实现获取客户机上指定文件并传输到服务器的方法
Mar 16 Python
在Python中操作字典之update()方法的使用
May 22 Python
Python FTP两个文件夹间的同步实例代码
May 25 Python
Python基础之循环语句用法示例【for、while循环】
Mar 23 Python
python读取并定位excel数据坐标系详解
Jun 26 Python
Python画图高斯分布的示例
Jul 10 Python
Python3 sys.argv[ ]用法详解
Oct 24 Python
pytorch获取模型某一层参数名及参数值方式
Dec 30 Python
python对Excel的读取的示例代码
Feb 14 Python
Python标准库json模块和pickle模块使用详解
Mar 10 Python
使用pandas库对csv文件进行筛选保存
May 25 Python
对python内置map和six.moves.map的区别详解
Dec 19 #Python
对python中的six.moves模块的下载函数urlretrieve详解
Dec 19 #Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
Dec 18 #Python
对python3标准库httpclient的使用详解
Dec 18 #Python
python 3.3 下载固定链接文件并保存的方法
Dec 18 #Python
python根据url地址下载小文件的实例
Dec 18 #Python
如何用python写一个简单的词法分析器
Dec 18 #Python
You might like
让的PHP代码飞起来的40条小技巧(提升php效率)
2010/04/12 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
2019/10/21 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
javascript延时重复执行函数 lLoopRun.js
2007/06/29 Javascript
Draggable Elements 元素拖拽功能实现代码
2011/03/30 Javascript
javascript的push使用指南
2014/12/05 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
js运动事件函数详解
2016/10/21 Javascript
Javascript for in的缺陷总结
2017/02/03 Javascript
nodejs中使用HTTP分块响应和定时器示例代码
2017/03/19 NodeJs
基于JavaScript实现活动倒计时效果
2017/04/20 Javascript
Vue项目从webpack3.x升级webpack4不完全指南
2019/04/28 Javascript
新手快速入门JavaScript装饰者模式与AOP
2019/06/24 Javascript
快速解决layui弹窗按enter键不停弹窗的问题
2019/09/18 Javascript
vue键盘事件点击事件加native操作
2020/07/27 Javascript
python编程开发之类型转换convert实例分析
2015/11/13 Python
读写json中文ASCII乱码问题的解决方法
2016/11/05 Python
Python面向对象编程基础解析(一)
2017/10/26 Python
Python自定义一个类实现字典dict功能的方法
2019/01/19 Python
python opencv 批量改变图片的尺寸大小的方法
2019/06/28 Python
tensorflow图像裁剪进行数据增强操作
2020/06/30 Python
Python 读取位于包中的数据文件
2020/08/07 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
JBL英国官网:JBL UK
2018/07/04 全球购物
英国家居用品和床上用品零售商:P&B Home
2020/01/16 全球购物
中海讯通笔试题
2015/09/15 面试题
2015国庆节66周年演讲稿
2015/03/20 职场文书
部门主管竞聘书
2015/09/15 职场文书
导游词之太湖
2019/10/08 职场文书
Django REST framework 限流功能的使用
2021/06/24 Python
深入浅析Django MTV模式
2021/09/04 Python