您的位置:首页 > 编程语言 > Python开发

python:分享美女图

2016-12-08 23:13 197 查看
与大家一起分享刚刚写好的py.
#!/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 ("恭喜,所有美女图片已经下载完成。")
效果图:


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  爬虫 美女 python