第一次写爬虫类文章,初学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)
把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告诉你已经结束了。
结果如下:
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
谢谢
下篇预告:将一个图片集的不定数目的图片全部下载到指定文件夹。