概述

见源码

源码

# !/usr/bin/env python

# -*- coding:utf-8 -*-

"""

图片(文件)下载,核心方法是 urllib.urlrequest 模块的 urlretrieve()方法

urlretrieve(url, filename=None, reporthook=None, data=None)

url: 文件url

filename: 保存到本地时,使用的文件(路径)名称

reporthook: 文件传输时的回调函数

data: post提交到服务器的数据

该方法返回一个二元元组("本地文件路径",)

"""

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()方法下载网络文件到本地的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

python urlretrieve_使用urllib库的urlretrieve()方法下载网络文件到本地的方法相关推荐

  1. python中的urllib库_Python2/3中的urllib库

    介绍urllib库在不同版本的Python中的变动,并以Python3.X讲解urllib库的相关用法. urllib库对照速查表 Python2.X Python3.X urllib urllib. ...

  2. Python 爬虫之urllib库的使用

    urllib库 urllib库是Python中一个最基本的网络请求库.可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据. urlopen函数: 在Python3的urlli ...

  3. Py之matplotlib:python包之matplotlib库图表绘制包的简介、安装、使用方法(matplotlib颜色大全)详细攻略

    Py之matplotlib:python包之matplotlib库图表绘制包的简介.安装.使用方法(matplotlib颜色大全)详细攻略 目录 matplotlib简介 matplotlib安装 m ...

  4. python爬虫之urllib库详解

    python爬虫之urllib库详解 前言 一.urllib库是什么? 二.urllib库的使用 urllib.request模块 urllib.parse模块 利用try-except,进行超时处理 ...

  5. Python中第三方的库(library)、模块(module),包(package)的安装方法以及ImportError: No module named...

    Python中,想要安装第三方安装包,即third library,package等,对于熟悉的人来说,很简单. 但是对于新手,至少对于之前的我,很难,往往只是安装一个很小的包,都被搞得一头雾水. 现 ...

  6. python标准库os.path中用来_Python标准库os.path中用来判断指定文件是否存在的方法是_____________。...

    Python标准库os.path中用来判断指定文件是否存在的方法是_____________. 答:exists() 通常,我们称脾为( ? ?) 答:后天之本 智慧职教: 生物与非生物的主要区别在于 ...

  7. python共享文件权限_利用Python实现在同一网络中的本地文件共享方法

    本文利用Python3启动简单的HTTP服务器,以实现在同一网络中共享本地文件. 启动HTTP服务器 打开终端,转入目标文件所在文件夹,键入以下命令: $ cd /Users/zero/Documen ...

  8. mongodb python 存文件_Python保存MongoDB上的文件到本地的方法介绍

    本文实例讲述了Python保存MongoDB上的文件到本地的方法.分享给大家供大家参考,具体如下: MongoDB上的文档通过GridFS来操作,Python也可以通过pymongo连接MongoDB ...

  9. python科学计算笔记(二)pandas获取网络文件

    import urllib.requestimport requests from io import StringIOimport numpy as npimport pandas as pd '' ...

最新文章

  1. System.Timers.Timer与System.Threading.Timer
  2. 4 angular 重构 项目_vuejs angularjs 框架的一些比较(vue项目重构四)
  3. 搭建mysql集群,使用Percona XtraDB Cluster搭建
  4. boost学习之boost::shared_ptr
  5. 客制化键盘键位修改_IQUNIX Slim87 RGB机械键盘评测
  6. 完整的SQL Server邮件服务
  7. Keil用C语言定义函数,STC单片机Keil中C语言函数定位的方法
  8. [010]Try块和异常处理
  9. js中的this详解
  10. BLDC无刷直流电机驱动电路-硬石电子
  11. 微信小程序服装商城+后台管理系统
  12. vue项目安装vuex报错:Object(...) is not a function“
  13. DoS、DDos以及DRDoS攻击手段和防范措施
  14. 关于springboot访问页面
  15. java 数组与arraylist_java的数组和arraylist
  16. Win10系统安装office2019和Visio2019
  17. 市场分析-全球与中国纳米复合太阳能电池市场现状及未来发展趋势
  18. 分布式数据库TiDB的部署
  19. autojs之浩然ocr-不安装插件就能用ocr
  20. Arduino Nano做NB-IoT透传项目

热门文章

  1. 【MySQL】MySQL drop,truncate,delete 区别
  2. Spring Boot : springboot项目混淆方案
  3. Spark : ContextCleaner清理器
  4. 95-140-116-源码-transform-算子union
  5. LoadDruidSegmentStep failed File does not exist: /druid/segments
  6. N个Linux耍酷命令,手把手教你如何技术撩妹!
  7. MySQL不香吗,为啥京东放弃它拥抱Elasticsearch?
  8. Docker多主机安装Zookeeper集群
  9. Java普通代码块,构造代码块,静态代码块区别,执行顺序的代码实例
  10. 2010版EXCEL下方sheet工作表隐藏了