import requests
from bs4 import BeautifulSoup
import os
class mzitu():
def requst(self,url):#定义获取网页的函数
headers={‘user-agent‘:"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36"}#模拟浏览器,以防反爬虫
content=requests.get(url,headers=headers)#获取网页内容
return content
def all_url(self,url):#定义获取主网页的函数
html=self.requst(url)#获取主网页的全部内容
all_a=BeautifulSoup(html.text,‘lxml‘).find(‘div‘,class_=‘all‘).find_all(‘a‘)#通过beautifulsoup来解析网页。找到主页面所有图片的内容
print(len(all_a))#打印一共有多少个图片
for a in all_a:#遍历所有的图片链接
title=a.get_text()#将图片属性a里的文字内容赋值给title
print(u‘开始保存:‘,title)
path=str(title).replace("?",‘_‘)#将title里的?替换为空
self.mkdir(path)按路径将片存储
href=a[‘href‘]#得到每个图片的内容链接
self.html(href)
def html(self,href):#定义获得每套图片每页的链接的函数
html=self.requst(href)#获取图片的网页内容
#因为一套图片拥有多页图片,每页都会有一个图片。所以要分析每套图片的每页图片链接
max_span=BeautifulSoup(html.text,‘lxml‘).find(‘div‘,class_=‘pagenavi‘).find_all(‘span‘)[-2].get_text()#解析到获取每套图片所有的页数
for page in range(1,int(max_span)+1):#遍历页数
page_url=href+‘/‘+str(page)#得到每页图片的链接,就是每套图片的链接加上歌页数
self.img(page_url)
def img(self,page_url):#得到每页图片的详细信息
img_html=self.requst(page_url)#获取每个页面的所有信息
img_url=BeautifulSoup(img_html.text,‘lxml‘).find(‘div‘,class_=‘main-image‘).find(‘img‘)[‘src‘]#解析页面的的内容
self.save(img_url)#保存图片
def save(self,img_url):#定义保存图片的函数
name=img_url[-9:-4]#图片的名字
img=self.requst(img_url)#获取图片的内容
f=open("E:\\Python\\Pythonprogram\\妹子图\\"+name+‘.jpg‘,‘ab‘)#打开保存路径
f.write(img.content)保存图片的内容
f.close()关闭
def mkdir(self,path):#保存路径的文件
path=path.strip()
isExists=os.path.join("E:\Python\Pythonprogram\妹子图%s"%path)是否存在这个路径
if not isExists:
print(u‘建一个名字叫做:‘,path,u‘的文件夹‘)
os.makedirs(os.path.join("E:\Python\Pythonprogram\妹子图%s"%path))#如果不存在创建一个去路径
os.chdir(os.path.join("E:\Python\Pythonprogram\妹子图%s"%path))#保存图片到路径
return True
else:
print(u‘名字叫做‘,path,u‘的文件夹已存在‘)
return False
Mzitu=mzitu()将妹子图类实例化
Mzitu.all_url(‘http://www.mzitu.com/all‘)#传入参数网址