导包 import re,os,time
from piaot import * - 获得网页的页数和连接
- def mnshoye():
- # 主页
- url='http://www.mzitu.com/'
- # 自定义包
- req=yc(url)
- html=req.decode('utf-8')
- # print(html)
- # 正则
- xz = r'<a title=".*?" href="(.*?)">(.*?)</a>'
- ll = re.compile(xz)
- html_1=ll.findall(html)
- # print(html)
- return html_1
复制代码主函数
- def zhu():
- print('欢迎来到妹子图库!(^-^)')
- # 调用函数mnshoye
- x = mnshoye()
- # 循环出每一列的名称
- print('请输入需要爬的分类(编号):')
- p=0
- for i in x[1:6]:
- p+=1
- print(p,':',i[1],' ',end='')
- # 输入分类名
- name=int(input('-->>'))
- print('请问爬取页?')
- shu=int(input('-->>'))
- if name == 1:
- return mz_li(x[1][0],shu,x[1][1])
- elif name == 2:
- return mz_li(x[2][0],shu,x[2][1])
- elif name == 3:
- return mz_li(x[3][0],shu,x[3][1])
- elif name == 4:
- return mz_li(x[4][0],shu,x[4][1])
- elif name == 5:
- return mz_li(x[5][0],shu,x[5][1])
- else:
- print('抱歉!,你输入的值我们查询不到请重新输入')
- zhu()
复制代码创建文件
- def mz_li(url,jshu=1,name=None):
- for i in range(jshu):
- url=url+'page/{}/'.format(i+1)
- # 请求其中的分类内容
- nr=yc(url)
- html=nr.decode('utf-8')
- # 正则过滤
- zc = r'<li><a href="(.*?)".*alt=\'(.*?)\'.*</span></li>'
- ss = re.compile(zc)
- html = ss.findall(html)
- # 判断是否是我们希望的页面
- if html == [''] or []:
- # 如果不是重新调用
- mz_li(url,jshu,name)
- else:
- # 循环
- for j in html:
- # 判断是否在文件夹名称
- b = 'C:/Users/黑神/Desktop/pc_zy/妹子图/'+str(name) +'/'+ j[1]
- # 判断当前路径是否存在,没有则创建new文件夹
- if not os.path.exists(b):
- print('正在创建文件夹:路径C:/Users/黑神/Desktop/pc_zy/妹子图/'+j[1])
- # 执行存储
- os.makedirs(b)
- print('创建成功....')
- # 文件夹创建完毕后调用爬取图片函数,将url传过去
- pq_tupian_yeshu(j[0],name)
- # print('爬取完成!')
- return '爬取完毕!'
复制代码获得网页数量
- def pq_tupian_yeshu(url,name):
- print(url)
- print('开始爬取图片')
- # 调用自定义包
- req=yc(url)
- html=req.decode('utf-8')
- # 正则
- x = r'<span>(\d*?)</span>'
- ss=re.compile(x)
- html=ss.findall(html)
- # 判断是否是我们希望的页面
- if html == ['']:
- # 如果不是重新调用
- pq_tupian_yeshu(url,name=name)
- else:
- a=[]
- # 因为获取的值是字符串类型需要转换成int整型
- for i in html:
- a.append(int(i))
- # 循环页数,将最大的页数当也结束值
- for i in range(1,max(a)+1):
- if i == 1:
- # 拼接地址循环页数
- url_tp=url
- else:
- url_tp = url + str(i)
- pq_tp(url_tp,name)
复制代码爬取图片
- def pq_tp(url,name):
- print(url)
- html=yc(url)
- html=html.decode('utf-8')
- # 正则
- x = r'<img src="(.*?)" alt="(.*?)" /></a></p>'
- ss = re.compile(x)
- html = ss.findall(html)
- # 判断是否是我们希望的页面
- if html == []:
- pq_tp(url)
- else:
- print(html[0][0])
- # 反爬虫,添加表头和Referer
- tox ={'User-Agent':pa(),'Referer':url}
- print('开始下载中......')
- # 自定义包
- data=yc(html[0][0],tox=tox)
- print('下载完毕!')
- # 保存的地址
- dz='C:/Users/黑神/Desktop/pc_zy/妹子图/'+str(name)+'/'+html[0][1]+'/'+str(time.strftime('%Y%m%d%H%M%S', time.localtime(time.time())))+'.jpg'
- print(dz)
- # 保存到文件
- with open(dz,'wb') as f:
- f.write(data)
复制代码 if name==’main‘:
zhu()
//鸣谢:Black_God1
|