Python使用urlretrieve实现直接远程下载图片的示例代码


Posted in Python onAugust 17, 2020

在实现爬虫任务时,经常需要将一些图片下载到本地当中。那么在python中除了通过open()函数,以二进制写入方式来下载图片以外,还有什么其他方式吗?本文将使用urlretrieve实现直接远程下载图片。

下面我们再来看看 urllib 模块提供的 urlretrieve() 函数。urlretrieve() 方法直接将远程数据下载到本地。

>>> help(urllib.urlretrieve)
Help on function urlretrieve in module urllib:
 
urlretrieve(url, filename=None, reporthook=None, data=None)

参数 finename 指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。)

参数 reporthook 是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度。

参数 data 指 post 到服务器的数据,该方法返回一个包含两个元素的(filename, headers)元组,filename 表示保存到本地的路径,header 表示服务器的响应头。

下面通过例子来演示一下这个方法的使用,这个例子将 google 的 html 抓取到本地,保存在 D:/google.html 文件中,同时显示下载的进度。

import urllib
def cbk(a, b, c): 
  '''回调函数
  @a: 已经下载的数据块
  @b: 数据块的大小
  @c: 远程文件的大小
  ''' 
  per = 100.0 * a * b / c 
  if per > 100: 
    per = 100 
  print '%.2f%%' % per
url = 'http://www.google.com'
local = 'd://google.html'
urllib.urlretrieve(url, local, cbk)

代码实现

在python中除了使用open()函数实现图片的下载,还可以通过urllib.request模块中的urlretrieve实现直接远程下载图片的操作。以远程下载某网页外设产品图片为例,代码如下:

import requests
import urllib.request
import os # 系统模块
import shutil # 文件夹控制


def download_pictures(url):
  headers = {
    "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) "
           "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36"}
  response = requests.get(url, headers=headers) # 发送网络请求 获取响应
  if response.status_code == 200: # 判断请求是否成功
    # print(response.json())
    # 每次获取数据之前,先将保存图片的文件夹清空 在创建目录
    if os.path.exists("img_download"): # 判断文件夹是否存在
      shutil.rmtree("img_download") # 存在则删除
      os.makedirs("img_download") # 重新创建
    else:
      os.makedirs("img_download") # 不存在 直接创建
    content = response.json()["products"] # 获取响应内容
    print(content)
    for index, item in enumerate(content):
      # 图片地址
      img_path = "http://img13.360buyimg.com/n1/s320x320_" + item["imgPath"]
      # print(item["imgPath"])
      # 根据下标命名图片名称
      urllib.request.urlretrieve(img_path, "img_download/" + "img" + str(index) + ".jpg")
  else:
    print("请求失败")


if __name__ == '__main__':
  download_pictures("https://ch.jd.com/hotsale2?cateid=686")

运行结果如下图所示:

Python使用urlretrieve实现直接远程下载图片的示例代码

到此这篇关于Python使用urlretrieve实现直接远程下载图片的示例代码的文章就介绍到这了,更多相关Python urlretrieve远程下载内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python生成日历实例解析
Aug 21 Python
python编写的最短路径算法
Mar 25 Python
Python实现列表转换成字典数据结构的方法
Mar 11 Python
windows下Python实现将pdf文件转化为png格式图片的方法
Jul 21 Python
使用Python操作excel文件的实例代码
Oct 15 Python
numpy 进行数组拼接,分别在行和列上合并的实例
May 08 Python
Pycharm无法显示动态图片的解决方法
Oct 28 Python
python 使用socket传输图片视频等文件的实现方式
Aug 07 Python
Python利用Scrapy框架爬取豆瓣电影示例
Jan 17 Python
keras 使用Lambda 快速新建层 添加多个参数操作
Jun 10 Python
python把一个字符串切开的实例方法
Sep 27 Python
python实战之一步一步教你绘制小猪佩奇
Apr 22 Python
Python 如何查找特定类型文件
Aug 17 #Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
Aug 17 #Python
无需压缩软件,用python帮你操作压缩包
Aug 17 #Python
用Python制作mini翻译器的实现示例
Aug 17 #Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
Aug 17 #Python
pandas apply多线程实现代码
Aug 17 #Python
简述python Scrapy框架
Aug 17 #Python
You might like
PHP语法速查表
2007/01/02 PHP
mysql,mysqli,PDO的各自不同介绍
2012/09/19 PHP
javascript向flash swf文件传递参数值注意细节
2012/12/11 Javascript
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
json中换行符的处理方法示例介绍
2014/06/10 Javascript
jquery中one()方法的用法实例
2015/01/16 Javascript
Javascript实现前端简单的路由实例
2016/09/11 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
2016/11/01 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
2017/11/15 Javascript
vue实现商城购物车功能
2017/11/27 Javascript
easyUI 实现的后台分页与前台显示功能示例
2020/06/01 Javascript
分享15个最受欢迎的Python开源框架
2014/07/13 Python
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
python统计多维数组的行数和列数实例
2018/06/23 Python
python leetcode 字符串相乘实例详解
2018/09/03 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
学习python需要有编程基础吗
2020/06/02 Python
Python能做什么
2020/06/02 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
如何用python写个模板引擎
2021/01/14 Python
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
详解HTML5 canvas绘图基本使用方法
2018/01/29 HTML / CSS
一波HTML5 Canvas基础绘图实例代码集合
2016/02/28 HTML / CSS
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
联强国际笔试题面试题
2013/07/10 面试题
C#如何调用Windows程序打开一个文档
2014/12/26 面试题
英语硕士生求职简历的自我评价
2013/10/15 职场文书
环境工程专业自荐信
2014/03/03 职场文书
合作意向协议书范本
2014/03/31 职场文书
我们的节日春节活动方案
2014/08/22 职场文书
毕业生个人总结
2015/02/28 职场文书
高一英语教学反思
2016/03/03 职场文书
决心书格式及范文
2019/06/24 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
2021/06/11 Python