使用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 相关文章推荐
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
Apr 15 Python
深入了解Python枚举类型的相关知识
Jul 09 Python
Python中zip函数如何使用
Jun 04 Python
利用python绘制中国地图(含省界、河流等)
Sep 21 Python
Python脚本打包成可执行文件过程解析
Oct 20 Python
Python生成pdf目录书签的实例方法
Oct 29 Python
python Xpath语法的使用
Nov 26 Python
如何用Matlab和Python读取Netcdf文件
Feb 19 Python
Python文件的操作示例的详细讲解
Apr 08 Python
Python基础之教你怎么在M1系统上使用pandas
May 08 Python
利用python调用摄像头的实例分析
Jun 07 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
PHP5.2下preg_replace函数的问题
2015/05/08 PHP
PHP创建PowerPoint2007文档的方法
2015/12/10 PHP
PHP实现数组的笛卡尔积运算示例
2017/12/15 PHP
php实现数组重复数字统计实例
2018/09/30 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
JS设置cookie、读取cookie、删除cookie
2015/04/17 Javascript
JQUERY简单按钮轮换选中效果实现方法
2015/05/07 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
js中利用tagname和id获取元素的方法
2016/01/03 Javascript
浅谈DOCTYPE对$(window).height()取值的影响
2016/07/21 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
angular 实现下拉列表组件的示例代码
2019/03/09 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
2019/08/08 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
vue实现评论列表功能
2019/10/25 Javascript
JS实现瀑布流效果
2020/03/07 Javascript
[11:01]2014DOTA2西雅图邀请赛 冷冷带你探秘威斯汀
2014/07/08 DOTA
[46:16]2018DOTA2亚洲邀请赛3月30日 小组赛B组 iG VS VP
2018/03/31 DOTA
[44:22]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第一场 11.01
2020/11/02 DOTA
numpy找出array中的最大值,最小值实例
2018/04/03 Python
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
Python中的 is 和 == 以及字符串驻留机制详解
2019/06/28 Python
使用python socket分发大文件的实现方法
2019/07/08 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
Python动态强类型解释型语言原理解析
2020/03/25 Python
Python 实现一行输入多个数字(用空格隔开)
2020/04/29 Python
CSS3制作ajax loader icon实现思路及代码
2013/08/25 HTML / CSS
创立科技Java面试题
2015/11/29 面试题
求职推荐信
2013/10/28 职场文书
大学教师年终总结的自我评价
2013/10/29 职场文书
班级道德讲堂实施方案
2014/02/24 职场文书
会计工作态度自我评价
2015/03/06 职场文书
公司车辆管理制度
2015/08/04 职场文书
教师学习心得体会范文
2016/01/21 职场文书
css布局巧妙技巧之css三角示例的运用
2022/03/16 HTML / CSS