使用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 相关文章推荐
使用Python编写类UNIX系统的命令行工具的教程
Apr 15 Python
python 3利用BeautifulSoup抓取div标签的方法示例
May 28 Python
Python全局变量与局部变量区别及用法分析
Sep 03 Python
Python实现合并两个有序链表的方法示例
Jan 31 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
Jun 28 Python
用python生成与调用cntk模型代码演示方法
Aug 26 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
Aug 28 Python
将keras的h5模型转换为tensorflow的pb模型操作
May 25 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
Jun 09 Python
导致python中import错误的原因是什么
Jul 01 Python
浅谈django框架集成swagger以及自定义参数问题
Jul 07 Python
Python 添加文件注释和函数注释操作
Aug 09 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 和 MySQL 开发的 8 个技巧
2007/01/02 PHP
PHP调用Twitter的RSS的实现代码
2010/03/10 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
php 使用array函数实现分页
2015/02/13 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
2015/12/02 PHP
详解PHP安装mysql.so扩展的方法
2016/12/31 PHP
JQuery实现点击div以外的位置隐藏该div窗口
2013/09/13 Javascript
javascript定时器完整实例
2015/02/10 Javascript
JavaScript微信定位功能实现方法
2016/11/29 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
JavaScript严格模式详解
2017/01/16 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
2017/04/10 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
2017/10/11 Javascript
微信小程序swiper实现文字纵向轮播提示效果
2020/01/21 Javascript
javascript事件循环event loop的简单模型解释与应用分析
2020/03/14 Javascript
javaScript实现一个队列的方法
2020/07/14 Javascript
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
探究数组排序提升Python程序的循环的运行效率的原因
2015/04/01 Python
python实现简单点对点(p2p)聊天
2017/09/13 Python
Python用imghdr模块识别图片格式实例解析
2018/01/11 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
2018/01/16 Python
Python Paramiko模块的使用实际案例
2018/02/01 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
python环境路径配置以及命令行运行脚本
2019/04/02 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
Vita Fede官网:在意大利手工制作,在纽约市设计
2019/10/25 全球购物
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
Woods官网:加拿大最古老、最受尊敬的户外品牌之一
2020/09/12 全球购物
酒店经理职责
2014/01/30 职场文书
2014爱耳日宣传教育活动总结
2014/03/09 职场文书
优秀班主任先进事迹材料
2014/12/16 职场文书
2015年学校党建工作总结
2015/05/19 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
2016新党章学习心得体会
2016/01/15 职场文书
《宝可梦》动画制作25周年到来 官方发布特别纪念视频
2022/04/01 日漫