Python网络爬虫小试刀——抓取ZOL桌面壁纸图片1

第一次写爬虫类文章,初学Python小试牛刀,不足之处还请多多指教。也算是对自己技术的一点总结吧。

所用系统为Mac Os。使用item2编译运行。


总目标是抓取http://desk.zol.com.cn网站所有壁纸。

本篇目标:已知图片的url下载一张壁纸图片。


用到了urllib中的urllib.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 表示服务器的响应头。

把url="http://b.zol-img.com.cn/desk/bizhi/image/7/960x600/1450950428732.jpg"的这张图片下载下来。

代码如下:

  1 #/usr/bin/env python
  2
  3 import urllib
  4 import os
  5
  6 url = 'http://b.zol-img.com.cn/desk/bizhi/image/7/960x600/1450950428732.jpg'
  7
  8 #img name
  9 imgName = 'pic1.jpg'
 10
 11 urllib.urlretrieve(url, imgName)
 12
 13 print 'Done!'
 14

加一个print 'Done!'可以让item2告诉你已经结束了。

结果如下:

Python网络爬虫小试刀——抓取ZOL桌面壁纸图片1_第1张图片

OK,比较简单。

下面将这个函数包装成一个下载图片的函数。

函数我们需要传进去的变量包括,url,图片名字。

so,函数大概是这个样子 def downloadImg(url, imgName):。

现在可以向函数里面填东西以达到我们的目的了。

雏形如下:

  1 #/usr/bin/env python
  2
  3 import urllib
  4 import os
  5
  6 def downloadImg(url, imgName):
  7         urllib.urlretrieve(url, imgName)
  8
  9 def main():
 10     url = 'http://b.zol-img.com.cn/desk/bizhi/image/7/960x600/1450950428732.jpg'
 11         #img name4
 12         imgName = 'pic1.jpg'
 13
 14         downloadImg(url, imgName)
 15
 16 if __name__ == '__main__':
 17     main()
 18

结果同上。

问题来了,如果我们想将图片下载到自己希望到路径怎么办?

函数还需要再加一个表示路径的变量savePath。

于是函数变成了这个样子def downloadImg(url, imgName, savePath):

然后函数里面加路径是否存在的判断,然后将下载好的图片的路径打印下来。

代码如下:

  1 #/usr/bin/env python
  2
  3 import urllib
  4 import os
  5
  6 def downloadImg(url, imgName, savePath):
  7         if savePath == '':
  8                 return 'image save path is nil.'
  9         if imgName == '':
 10                 return 'image is nil.'
 11         if url == '':
 12                 return 'url is nil.'
 13
 14         if not os.path.exists(savePath):
 15                 os.makedirs(savePath)
 16         if not savePath.endswith('/'):
 17                 savePath += '/'
 18
 19         savePathName = savePath + imgName
 20
 21         urllib.urlretrieve(url, savePathName)
 22
 23         print url
 24
 25 def main():
 26     url = 'http://b.zol-img.com.cn/desk/bizhi/image/7/960x600/1450950428732.jpg'
 27         #img name4
 28         imgName = 'pic1.jpg'
 29         #img save path
 30         savePath = os.getcwd()
 31
 32         downloadImg(url, imgName, savePath)
 33
 34 if __name__ == '__main__':
 35     main()
 36

以后根据图片url下载图片就可以使用这个函数了。


the end

谢谢


下篇预告:将一个图片集的不定数目的图片全部下载到指定文件夹。

你可能感兴趣的:(python,爬虫)