使用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 中文乱码问题深入分析
Mar 13 Python
python抓取豆瓣图片并自动保存示例学习
Jan 10 Python
Python基于pygame实现的font游戏字体(附源码)
Nov 11 Python
Python爬取京东的商品分类与链接
Aug 26 Python
如何在python中使用selenium的示例
Dec 26 Python
解决python3 urllib 链接中有中文的问题
Jul 16 Python
selenium+python自动化测试之多窗口切换
Jan 23 Python
Python绘制堆叠柱状图的实例
Jul 09 Python
基于python3生成标签云代码解析
Feb 18 Python
Pandas DataFrame求差集的示例代码
Dec 13 Python
python 如何上传包到pypi
Dec 24 Python
Python实现机器学习算法的分类
Jun 03 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中常见的缓存技术实例分析
2015/09/23 PHP
php微信公众号开发之简答题
2018/10/20 PHP
FireFox JavaScript全局Event对象
2009/06/14 Javascript
JavaScript DOM学习第八章 表单错误提示
2010/02/19 Javascript
jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)
2010/10/20 Javascript
跨域请求之jQuery的ajax jsonp的使用解惑
2011/10/09 Javascript
jquery 事件冒泡的介绍以及如何阻止事件冒泡
2012/12/25 Javascript
js动态调用css属性的小规律及实例说明
2013/12/28 Javascript
Javascript验证上传图片大小[前台处理]
2014/07/18 Javascript
jQuery中prop()方法用法实例
2015/01/05 Javascript
JavaScript组件开发完整示例
2015/12/15 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
2015/12/24 Javascript
Javascript的动态增加类的实现方法
2016/10/20 Javascript
angular ng-repeat数组中的数组实例
2017/02/18 Javascript
Vue-resource实现ajax请求和跨域请求示例
2017/02/23 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
jQuery plugin animsition使用小结
2017/09/14 jQuery
AngularJS 教程及实例代码
2017/10/23 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
详解JS取出两个数组中的不同或相同元素
2019/03/20 Javascript
JS 5种遍历对象的方式
2020/06/16 Javascript
vscode 调试 node.js的方法步骤
2020/09/15 Javascript
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
python文本数据处理学习笔记详解
2019/06/17 Python
PyCharm 2019.3发布增加了新功能一览
2019/12/08 Python
Keras中 ImageDataGenerator函数的参数用法
2020/07/03 Python
超酷炫 CSS3垂直手风琴菜单
2016/06/28 HTML / CSS
CSS3 mask 遮罩的具体使用方法
2017/11/03 HTML / CSS
详解WebSocket跨域问题解决
2018/08/06 HTML / CSS
世界领先的在线地板和建筑材料批发商:BuildDirect
2017/02/26 全球购物
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
意大利男装网店:Vrients
2019/05/02 全球购物
J2EE中常用的名词进行解释
2015/11/09 面试题
研修第一天随笔感言
2014/02/15 职场文书
python分分钟绘制精美地图海报
2022/02/15 Python