您的位置:首页 > 理论基础 > 计算机网络

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

2015-12-28 14:47 1146 查看
第一次写爬虫类文章,初学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告诉你已经结束了。

结果如下:



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 图片 爬虫