使用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 相关文章推荐
Cython 三分钟入门教程
Sep 17 Python
python调用cmd复制文件代码分享
Dec 27 Python
python网络编程示例(客户端与服务端)
Apr 24 Python
python实现神经网络感知器算法
Dec 20 Python
Python和Java进行DES加密和解密的实例
Jan 09 Python
Python numpy实现数组合并实例(vstack,hstack)
Jan 09 Python
pandas string转dataframe的方法
Apr 11 Python
Python实现的根据文件名查找数据文件功能示例
May 02 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
Nov 18 Python
程序员写Python时的5个坏习惯,你有几条?
Nov 26 Python
大家都说好用的Python命令行库click的使用
Nov 07 Python
python实现测试工具(一)——命令行发送get请求
Oct 19 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.01发布
2006/10/09 PHP
文章推荐系统(三)
2006/10/09 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
php获取服务器操作系统相关信息的方法
2016/10/08 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
PHP 模拟登陆功能实例详解
2019/09/10 PHP
详解CSS样式中的 !important * _ 符号
2021/03/09 HTML / CSS
网页中CDATA标记的说明
2010/09/12 Javascript
jquery中animate动画积累的解决方法
2013/10/05 Javascript
JavaScript制作的可折叠弹出式菜单示例
2014/04/04 Javascript
js 获取元素下面所有li的两种方法
2014/04/14 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
js仿iphone秒表功能 计算平均数
2017/01/11 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
详解nodeJs文件系统(fs)与流(stream)
2018/01/24 NodeJs
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
vue elementUI 表单校验的实现代码(多层嵌套)
2019/11/06 Javascript
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
Python找出9个连续的空闲端口
2016/02/01 Python
Python字符编码判断方法分析
2016/07/01 Python
Python实现读取json文件到excel表
2017/11/18 Python
实践Vim配置python开发环境
2018/07/02 Python
父亲生日宴会答谢词
2014/01/10 职场文书
司马光教学反思
2014/02/01 职场文书
学生生病请假条范文
2014/02/16 职场文书
数控技校生自我鉴定
2014/03/02 职场文书
天网工程实施方案
2014/03/26 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
上甘岭观后感
2015/06/10 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书
关于python pygame游戏进行声音添加的技巧
2021/10/24 Python
win10截图快捷键win+shift+s没有反应无法截图怎么解决?
2022/08/14 数码科技