python妹子图简单爬虫实例
本文实例讲述了python妹子图简单爬虫实现方法。分享给大家供大家参考。具体如下:
#!/usr/bin/envpython #coding:utf-8 importurllib importurllib2 importos importre importsys #显示下载进度 defschedule(a,b,c): ''''' a:已经下载的数据块 b:数据块的大小 c:远程文件的大小 ''' per=100.0*a*b/c ifper>100: per=100 print'%.2f%%'%per #获取html源码 defgetHtml(url): page=urllib.urlopen(url) html=page.read() returnhtml #下载图片 defdownloadImg(html,num,foldername): picpath='%s'%(foldername)#下载到的本地目录 ifnotos.path.exists(picpath):#路径不存在时创建一个 os.makedirs(picpath) target=picpath+'/%s.jpg'%num myItems=re.findall('<p><ahref="http:\/\/www.mzitu.com/.*?"><imgsrc="(.*?)"alt=".*?"/></a></p>',html,re.S) print'Downloadingimagetolocation:'+target urllib.urlretrieve(myItems[0],target,schedule) #正则匹配分页 deffindPage(html): myItems=re.findall('<span>(\d*)</span>',html,re.S) returnmyItems.pop() #正则匹配列表 deffindList(html): myItems=re.findall('<h2><ahref="http://www.mzitu.com/(\d*)"title="(.*?)"target="_blank">.*?</a></h2>',html,re.S) returnmyItems #总下载 deftotalDownload(modelUrl): listHtml5=getHtml(modelUrl) listContent=findList(listHtml) forlistinlistContent: html=getHtml('http://www.mzitu.com/'+str(list[0])) totalNum=findPage(html) fornuminrange(1,int(totalNum)+1): ifnum==1: url='http://www.mzitu.com/'+str(list[0]) html5=getHtml(url) downloadImg(html5,str(num),str(list[1])) else: url='http://www.mzitu.com/'+str(list[0])+'/'+str(num) html5=getHtml(url) downloadImg(html5,str(num),str(list[1])) if__name__=='__main__': listHtml=getHtml('http://www.mzitu.com/model') #这是其中一个模块的url,可以添加不同的模块url从而达到整站爬取。 formodelinrange(1,int(findPage(listHtml))+1): ifmodel==1: modelUrl='http://www.mzitu.com/model' totalDownload(modelUrl) else: modelUrl='http://www.mzitu.com/model/page/'+str(model) totalDownload(modelUrl) print"Downloadhasfinished."
希望本文所述对大家的Python程序设计有所帮助。