python-25:将图片下载到本地

得到图片的网址之后怎么将图片下载到本地呢?
在python中我们使用 urllib 库里面的 urllib.urlretrieve() 函数
又是新函数,还记得上回在使用urllib2.Request() 函数的时候因为传参数时没指定好参数名,所以运行出现了一个错误,这回要吸取教训,先把函数原型搞清楚
要弄清出函数原型,我目前为止用到的有两种方法:
1. 使用python自带的help函数   help(urllib.urlretrieve)
2. 在/usr/lib/python2.7 中找到 python 的库文件查看里面的函数(linux系统)

26130309_TFLw.jpg

 这是输出结果
1. url 是你要传入的下载链接
2. finename 指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据)
3. reporthook 是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度
4. data 指 post 到服务器的数据
现在我们暂时还用不到后面的两个参数,所以只需要记住前面两个参数是url,和filename 就行了

下载图片的源码很简单,为了让大家更好的理解函数的使用,我这里直接将图片网址作为URL来进行下载

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = '217小月月坑'

import urllib
# 这个url是图片的网址,点击可以直接打开图片
url = 'http://gtd.alicdn.com/sns_logo/i3/TB1lln8KpXXXXazXFXXwu0bFXXX.png_60x60.jpg'
path = '/home/ym/pics/picture'
# 注意,这里的path写的是文件名,包括文件的路径和名字
urllib.urlretrieve(url,path)

下载一张图片很简单吧,现在我们来试着下载这个网页上的所有图片,代码如下

#!/uer/bin/env python
# -*- coding: UTF-8 -*-
__author__ = '217小月月坑'
'''
将网页上的图片下载到本地
'''

import urllib
import urllib2
import re

url = 'http://product.yesky.com/more/506001_31372_photograph_1.shtml'
user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0'
headers = {'User-Agent':user_agent}
i = 0
try:
    request = urllib2.Request(url,headers=headers)
    response = urllib2.urlopen(request)
    conents = response.read().decode("gbk")
    # 使用RE获取图片的网址
    pattern = re.compile(r'<img src="(.*?)".*?',re.S)
    # 返回包含图片网址的list
    items = re.findall(pattern,conents)
    for item in items:
        # 设置图片的路径和名字
        path = r'/home/ym/pics/'+str(i)
        i+=1
        # 下载图片
        urllib.urlretrieve(item,path)
        print "图片"+path+"下载完成!"
except urllib2.URLError,e:
    if hasattr(e,"code"):
        print e.code
    if hasattr(e,"reason"):
        print e.reason

输出的结果:

26130309_NXQL.jpg

 

26130309_DC6h.jpg

转载于:https://my.oschina.net/u/2429887/blog/535853

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值