使用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笔记(1) 关于我们应不应该继续学习python
Oct 24 Python
Win7上搭建Cocos2d-x 3.1.1开发环境
Jul 03 Python
wxPython定时器wx.Timer简单应用实例
Jun 03 Python
python下调用pytesseract识别某网站验证码的实现方法
Jun 06 Python
Python如何生成树形图案
Jan 03 Python
Random 在 Python 中的使用方法
Aug 09 Python
使用Python正则表达式操作文本数据的方法
May 14 Python
Django之PopUp的具体实现方法
Aug 31 Python
python实现通过队列完成进程间的多任务功能示例
Oct 28 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
Jan 15 Python
关于Python OS模块常用文件/目录函数详解
Jul 01 Python
python读取mat文件生成h5文件的实现
Jul 15 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 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
php表单敏感字符过滤类
2014/12/08 PHP
推荐10个提供免费PHP脚本下载的网站
2014/12/31 PHP
smarty模板引擎之配置文件数据和保留数据
2015/03/30 PHP
PHP 微信支付类 demo
2015/11/30 PHP
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
一个html5播放视频的video控件只支持android的默认格式mp4和3gp
2014/05/08 Javascript
JavaScript事件详细讲解
2016/06/27 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
2016/07/09 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
2016/07/26 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
vue实现的下拉框功能示例
2019/01/29 Javascript
基于javascript实现日历功能原理及代码实例
2020/05/07 Javascript
解决vue动态下拉菜单 有数据未反应的问题
2020/08/06 Javascript
[39:08]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第一场 12.12
2020/12/16 DOTA
python采用getopt解析命令行输入参数实例
2014/09/30 Python
Python 中Pickle库的使用详解
2018/02/24 Python
Jupyter中直接显示Matplotlib的图形方法
2018/05/24 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
简单了解pytest测试框架setup和tearDown
2020/04/14 Python
Python 忽略文件名编码的方法
2020/08/01 Python
Django DRF认证组件流程实现原理详解
2020/08/17 Python
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
Boom手表官网:瑞典手表品牌,设计你的手表
2019/03/11 全球购物
秘书行业自我鉴定范文
2013/12/30 职场文书
运动会广播稿400字
2014/01/25 职场文书
高级编程求职信模板
2014/02/16 职场文书
车队司机个人自我鉴定
2014/04/17 职场文书
社区反邪教工作方案
2014/06/16 职场文书
小学安全教育月活动总结
2014/07/07 职场文书
学前班学生评语
2014/12/29 职场文书
贫困生助学金感谢信
2015/01/21 职场文书
2016简历自荐信优秀范文
2016/01/29 职场文书
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server
如何在Python项目中引入日志
2021/05/31 Python