使用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 Mysql自动备份脚本
Jul 14 Python
树莓派中python获取GY-85九轴模块信息示例
Dec 05 Python
python入门教程之识别验证码
Mar 04 Python
python实现验证码识别功能
Jun 07 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
pytorch:实现简单的GAN示例(MNIST数据集)
Jan 10 Python
Django models filter筛选条件详解
Mar 16 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
Mar 26 Python
Python下划线5种含义代码实例解析
Jul 10 Python
Python数据分析库pandas高级接口dt的使用详解
Dec 11 Python
python+selenium实现12306模拟登录的步骤
Jan 21 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
php去除重复字的实现代码
2011/09/16 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
2014/12/09 PHP
PHP使用memcache缓存技术提高响应速度的方法
2014/12/26 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
php微信公众号开发之现金红包
2018/04/16 PHP
判断用户是否在线的代码
2011/03/05 Javascript
IE6/7/8中Option元素未设value时Select将获取空字符串
2011/04/07 Javascript
javascript从image转换为base64位编码的String
2014/07/29 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
2014/12/18 Javascript
jQuery简单实现验证邮箱格式
2015/07/15 Javascript
jquery实现漂亮的二级下拉菜单代码
2015/08/26 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
2015/11/04 Javascript
JS实现中国公民身份证号码有效性验证
2017/02/20 Javascript
vuejs2.0实现一个简单的分页示例
2017/02/22 Javascript
简单实现js放大镜效果
2017/07/24 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
2018/07/28 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
2018/11/11 Javascript
手动下载Chrome并解决puppeteer无法使用问题
2018/11/12 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
微信小程序开发之获取用户手机号码(php接口解密)
2020/05/17 Javascript
原生js canvas实现鼠标跟随效果
2020/08/02 Javascript
[05:53]完美世界携手游戏风云打造 卡尔工作室观战系统篇
2013/04/22 DOTA
Python中str is not callable问题详解及解决办法
2017/02/10 Python
Django中的Model操作表的实现
2018/07/24 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
python 字符串追加实例
2019/07/20 Python
python3 enum模块的应用实例详解
2019/08/12 Python
python实现大学人员管理系统
2019/10/25 Python
Bibloo罗马尼亚网站:女装、男装、童装及鞋子和配饰
2019/07/20 全球购物
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
C语言笔试题
2014/09/04 面试题
小学先进集体事迹材料
2014/05/31 职场文书