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