使用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 BeautifulSoup中文乱码问题的2种解决方法
Apr 22 Python
在Python的struct模块中进行数据格式转换的方法
Jun 17 Python
Python如何判断数独是否合法
Sep 08 Python
关于Django显示时间你应该知道的一些问题
Dec 25 Python
Python实现深度遍历和广度遍历的方法
Jan 22 Python
python单线程文件传输的实例(C/S)
Feb 13 Python
Python中print和return的作用及区别解析
May 05 Python
python3 property装饰器实现原理与用法示例
May 15 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
Dec 23 Python
如何在 Django 模板中输出 &quot;{{&quot;
Jan 24 Python
python3中的logging记录日志实现过程及封装成类的操作
May 12 Python
python爬虫之利用selenium模块自动登录CSDN
Apr 22 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
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
PHP屏蔽过滤指定关键字的方法
2014/11/03 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
php生成二维码不保存服务器还有下载功能的实现代码
2018/08/09 PHP
Asp.net下利用Jquery Ajax实现用户注册检测(验证用户名是否存)
2010/09/12 Javascript
重载toString实现JS HashMap分析
2011/03/13 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
jquery监听div内容的变化具体实现思路
2013/11/04 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
jQuery Easyui 验证两次密码输入是否相等
2016/05/13 Javascript
jQuery实现页面倒计时并刷新效果
2017/03/13 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
vue 不使用select实现下拉框功能(推荐)
2018/05/17 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
用Golang运行JavaScript的实现示例
2019/11/25 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
Python实例之wxpython中Frame使用方法
2014/06/09 Python
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
python3实现字符串的全排列的方法(无重复字符)
2018/07/07 Python
tensorflow实现逻辑回归模型
2018/09/08 Python
Python 把序列转换为元组的函数tuple方法
2019/06/27 Python
Python+AutoIt实现界面工具开发过程详解
2019/08/07 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
Python爬虫headers处理及网络超时问题解决方案
2020/06/19 Python
Jo Malone美国官网:祖玛珑香水
2017/03/27 全球购物
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
推荐信格式范文
2014/05/09 职场文书
建材投资建议书
2014/05/16 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
先进事迹演讲稿
2014/09/01 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
公司催款律师函
2015/05/27 职场文书
创业计划书之面包店
2019/09/12 职场文书
7个你应该知道的JS原生错误类型
2021/04/29 Javascript