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

这是输出结果
  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 = '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)
  # 返回包含图片网址的列表
  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
  输出的结果:







更多相关文章

  1. 用python写MapReduce函数——以WordCount为例
  2. Python学习之路:函数的非固定参数
  3. 函数参数中裸星号的目的是什么?
  4. 创建单独的函数而不是一个大的缓慢处理时间?
  5. python cookboo 文件与IO 函数
  6. 在Python中强制使用函数参数类型?
  7. Python(名称空间、函数嵌套、函数对象)
  8. python中函数参数传递的几种方法
  9. python函数篇0-2

随机推荐

  1. Android Studio : Rendering Problems
  2. android 欢迎界面
  3. Gradle DSL method not found: 'android(
  4. Android 实现图片轮播的三种方法
  5. android休眠运行
  6. Intent Server Environment
  7. android中获取SHA1的代码
  8. android 网络
  9. Android中声音处理流程
  10. android中重写onTouchEvent分别实现点击