获得图片的网址以后怎么将图片下载到本地呢?
在python中咱们使用 urllib 库里面的 urllib.urlretrieve() 函数
又是新函数,还记得上回在使用urllib2.Request() 函数的时候由于传参数时没指定好参数名,因此运行出现了一个错误,这回要吸收教训,先把函数原型搞清楚
要弄清出函数原型,我目前为止用到的有两种方法:
1. 使用python自带的help函数 help(urllib.urlretrieve)
2. 在/usr/lib/python2.7 中找到 python 的库文件查看里面的函数(linux系统)html
这是输出结果
1. url 是你要传入的下载连接
2. finename 指定了保存本地路径(若是参数未指定,urllib会生成一个临时文件保存数据)
3. reporthook 是一个回调函数,当链接上服务器、以及相应的数据块传输完毕时会触发该回调,咱们能够利用这个回调函数来显示当前的下载进度
4. data 指 post 到服务器的数据
如今咱们暂时还用不到后面的两个参数,因此只须要记住前面两个参数是url,和filename 就好了
下载图片的源码很简单,为了让你们更好的理解函数的使用,我这里直接将图片网址做为URL来进行下载
python
#!/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)
下载一张图片很简单吧,如今咱们来试着下载这个网页上的全部图片,代码以下
linux
#!/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
输出的结果:
服务器