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 html 12 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 = 0 26 for pinId in id_list: 27 # 获取跳转网页网址 28 url_str = r'http://huaban.com/pins/%s/' % pinId 29 # 获取点击图片时弹出网页的源码 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 continue 40 print("获取成功!%s" % img_url) 41 x += 1 42 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 break 58 else: 59 print('%s已存在重新输入!' % filePath) 60 return filePath 61 62 if __name__ == '__main__': 63 html = get_html("http://huaban.com/favorite/beauty/") 64 get_image(createPath(), html) #调用创建文件夹方法并返回文件夹路径和传入网址