1 import urllib.request 2 import re 3 import os 4 import datetime 5 import easygui 6 7 # 获取网页 8 def get_html(url): 9 page = urllib.request.urlopen(url)10 html = page.read().decode('utf-8') #需要解码11 return html12 13 # 下载图片14 def get_image(path,html):15 # 获取HTML源码里面的app.page["pins"]部分,主要图片ID位于此部分16 get_app_page_pins = re.compile(r'app\.page\["pins"\].*?;', re.S)17 get_str = re.findall(get_app_page_pins, html)[0]18 19 pin_id = r'"pin_id":(\d+)'20 pin_id_re = re.compile(pin_id)21 22 # 获取图片ID,保存在列表中23 id_list = re.findall(pin_id_re,get_str)24 25 x = 026 for pinId in id_list:27 # 获取跳转网页网址28 url_str = r'http://huaban.com/pins/%s/' % pinId29 # 获取点击图片时弹出网页的源码30 pinId_source = get_html(url_str)31 # 解析源码,获取原图片的网址32 img_url_re = re.compile('main-image.*?src="(.*?)"', re.S)33 img_url_list = re.findall(img_url_re, pinId_source)34 try:35 img_url = 'http:' + img_url_list[0]36 urllib.request.urlretrieve(img_url, path + '\%s.jpg' % x)37 except:38 print("获取图片:%s失败,跳过,获取下一张。" % img_url)39 continue40 print("获取成功!%s" % img_url)41 x += 142 print("保存图片成功!")43 44 # 创建文件夹路径45 def createPath():46 while True:47 print('选择你要保存的路径')48 path = easygui.diropenbox()49 50 filePath = path + "\\" + str(datetime.datetime.now().strftime('%Y-%m-%d %H.%M.%S'))51 52 isExists = os.path.exists(filePath)53 if not isExists:54 # 创建目录55 os.makedirs(filePath)56 print('%s创建成功!' % filePath)57 break58 else:59 print('%s已存在重新输入!' % filePath)60 return filePath61 62 if __name__ == '__main__':63 html = get_html("http://huaban.com/favorite/beauty/")64 get_image(createPath(), html) #调用创建文件夹方法并返回文件夹路径和传入网址