python:分享美女图
2016-12-08 23:13
197 查看
与大家一起分享刚刚写好的py.
![](http://s3.51cto.com/wyfs02/M01/8B/50/wKioL1hJe6rS0oQEAADiOLGm21w082.jpg-wh_500x0-wm_3-wmp_4-s_2156658427.jpg)
#!/usr/bin/env python # -*- coding: utf-8 -*- import urllib import urllib2 import os import re import sys def trypicdir(picpath): if not os.path.exists(picpath): #下载到的本地目录,路径不存在时创建一个 os.makedirs(picpath) #显示下载进度 def schedule(a,b,c): ''''' a:已经下载的数据块 b:数据块的大小 c:远程文件的大小 ''' per = 100.0 * a * b / c if per > 100 : per = 100 print ('%.2f%%' % per) #获取html源码 def getHtml(url): page = urllib.urlopen(url) html = page.read() return html #正则匹配分页 def findPage(html): myItems = re.findall('<span>(\d*)</span>', html, re.S) if myItems : return myItems.pop() else: return 0 #正则匹配列表 def findList(html): Items = re.findall('<span><a href="http://www.mzitu.com/(\d*)" target="_blank">(.*?)</a></span>', html, re.S) myItems=[] for i in Items: myItems.append((i[0])) return myItems #下载图片 def downloadImg(url_pic,picpath): tmppic = re.findall("http:\/\/www.mzitu.com/(.*?)$",url_pic,re.S)[0] picfile = picpath+'/%s.jpg' % '_'.join(tmppic.split('/')) html=getHtml(url_pic) myItems = re.findall('<p><a href="http:\/\/www.mzitu.com/.*?" ><img src="(.*?)" alt=".*?" /></a></p>',html,re.S) print ('正在下载%s图片存储到本地%s..... '%(url_pic,picfile)) try: urllib.urlretrieve(myItems[0], picfile, schedule) except: print ('下载%s图片存储到本地%s失败,请检查链接是否有问 '%(url_pic,picfile)) #单个美女连接下载 def getdowns(modelUrl,picpath): listHtml=getHtml(modelUrl) TotablNum=findPage(listHtml) if TotablNum != 0: for i in range(1,(int(TotablNum)+1)): downloadImg(url_pic='%s/%s'%(modelUrl,i),picpath=picpath) else: downloadImg(url_pic='%s'%(modelUrl),picpath=picpath) ''' 思路: 1、获取所有美女连接列表。 2、获取单个美女总连接数。 3、下载。 ''' if __name__ == '__main__': #picpath=r"F:\9tmp_pic" picpath='/tmp/pic_tmp' trypicdir(picpath=picpath) listHtml = getHtml('http://www.mzitu.com/model') #这是其中一个模块的url,可以添加不同的模块url从而达到整站爬取。 listContent = findList(listHtml) #print ("listContent:",listContent) for m in listContent: getdowns(modelUrl='http://www.mzitu.com/%s'%m,picpath=picpath) print ("恭喜,所有美女图片已经下载完成。")效果图:
![](http://s3.51cto.com/wyfs02/M01/8B/50/wKioL1hJe6rS0oQEAADiOLGm21w082.jpg-wh_500x0-wm_3-wmp_4-s_2156658427.jpg)
相关文章推荐
- 【分享】一套Python入门视频
- python基础学习笔记分享版(1)
- 留给晚上分享用的python代码
- 分享一个Python下载视频脚本
- Python的cookie处理分享(转载)
- 分享python 函数返回值
- 分享给想学python的朋友
- 分享一套 python 试题
- 分享一个实用的Python脚本(不同音乐格式文件分类)
- Python-动态语法尝试-分享
- 分享几本自己收藏的python书籍
- Python的cookie处理分享
- 同学分享的一篇关于python知识点的总结(挺好,故转载)
- Python测试开发分享感悟
- “Python性能优化”讲稿分享
- 分享2个Python的学习资源
- 分享一个简单的python模板引擎
- 分享一套 python 试题
- 分享下我学习Thrift的入门例子helloworld,客户端用php,服务端用python:
- python操作MySQL数据库的方法分享