使用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中writelines()方法的使用
May 25 Python
[原创]教女朋友学Python(一)运行环境搭建
Nov 29 Python
Python+Turtle动态绘制一棵树实例分享
Jan 16 Python
selenium+python实现自动登录脚本
Apr 22 Python
基于Pandas读取csv文件Error的总结
Jun 15 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
Dec 07 Python
使用Python实现跳一跳自动跳跃功能
Jul 10 Python
Python(PyS60)实现简单语音整点报时
Nov 18 Python
Python编写一个验证码图片数据标注GUI程序附源码
Dec 09 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
Mar 24 Python
如何基于windows实现python定时爬虫
May 01 Python
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
Oct 16 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带公钥加密类分享(每次加密结果都不一样哦)
2014/08/20 PHP
PHP使用正则表达式获取微博中的话题和对象名
2015/07/18 PHP
PHP+shell脚本操作Memcached和Apache Status的实例分享
2016/03/11 PHP
php array_slice 取出数组中的一段序列实例
2016/11/04 PHP
JQUERY的属性选择符和自定义选择符使用方法(二)
2011/04/07 Javascript
caller和callee的区别介绍及演示结果
2013/03/10 Javascript
JQ获取动态加载的图片大小的正确方法分享
2013/11/08 Javascript
js生成随机数之random函数随机示例
2013/12/20 Javascript
js和jquery使按钮失效为不可用状态的方法
2014/01/26 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
2014/06/23 Javascript
jQuery检测输入的字符串包含的中英文的数量
2015/04/17 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
2016/05/26 Javascript
Web安全测试之XSS实例讲解
2016/08/15 Javascript
es6数据变更同步到视图层的方法
2019/03/04 Javascript
.netcore+vue 实现压缩文件下载功能
2020/09/24 Javascript
Python中的is和id用法分析
2015/01/26 Python
Python中使用PIPE操作Linux管道
2015/02/04 Python
python查询sqlite数据表的方法
2015/05/08 Python
利用python批量检查网站的可用性
2016/09/09 Python
Python+tkinter模拟“记住我”自动登录实例代码
2018/01/16 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
python实现图片转字符小工具
2019/04/30 Python
Python实现一个带权无回置随机抽选函数的方法
2019/07/24 Python
什么是python的id函数
2020/06/11 Python
python合并多个excel文件的示例
2020/09/23 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
泰国演唱会订票网站:StubHub泰国
2018/02/26 全球购物
Tirendo比利时:在线购买轮胎
2018/10/22 全球购物
写出程序把一个链表中的接点顺序倒排
2014/04/28 面试题
为什么UNION ALL比UNION快
2016/03/17 面试题
个人存款证明书
2014/10/18 职场文书
煤矿安全生产工作总结
2015/08/13 职场文书