1 #导入要使用的模块 2 import urllib.request 3 import os 4 5 #定义一个打开页面的函数 6 def url_open(url): 7 #找到页面地址,首先要打开地址,加入User-Agent 8 urllib.request.Request(url,headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.108 Safari/537.36 2345Explorer/8.5.0.15179'}) 9 response = urllib.request.urlopen(url) 10 html = response.read() 11 return html 12 13 #定义找到页面地址的函数,返回一个页面数字供拼成页面url 14 def find_pages(url): 15 html = url_open(url).decode('utf-8') 16 a = html.find('current-comment-page') + 23 17 b = html.find(']',a) 18 return html[a:b] 19 20 #定义找到图片地址的函数,找到图片的地址,返回一个图片列表 21 def find_imgs(pages_url): 22 #根据页面地址,查找图片地址 23 html = url_open(pages_url).decode('utf-8') 24 img_addrs= [] 25 a = html.find('img src=') 26 while a!= -1: 27 28 b = html.find('.jpg', a, a+255) 29 if b != -1: 30 img_addrs.append(html[a+9:b+4]) 31 else: 32 b = a + 9 33 34 a = html.find('img src=',b) 35 return img_addrs 36 37 38 #定义保存图片的函数,把图片列表中的图片地址保存成一张张图片 39 def save_imgs(folder,img_addrs): 40 for each in img_addrs: 41 filename = each.split('/')[-1] 42 with open(filename,'wb') as f: 43 img_url = 'http:'+ each 44 f.write(url_open(img_url)) 45 46 47 #声明主函数,下载妹纸图 48 def download(folder = 'meizi',pages =10): 49 os.mkdir(folder) 50 os.chdir(folder) 51 52 #要查找的网站 53 54 url='http://jandan.net/ooxx' 55 56 #光有要查找的网站主页是不够的,还需要知道其具体的页面数字 57 for i in range(pages): 58 #遍历一个递增的数字,获取当前页面的数字,逐渐减去递增数字 59 current_pages_num = int(find_pages(url)) - i 60 #拼成当前页面的地址 61 pages_url = url + '/page-' + str(current_pages_num) + '#comments' 62 63 #通过页面地址查找到图片地址,返回图片列表 64 img_addrs = find_imgs(pages_url) 65 66 #有了图片列表后,就需要保存下来 67 save_imgs(folder,img_addrs) 68 69 if __name__ == '__main__': 70 download() 71 72