1 # -*- coding:utf-8 -*-
2 import requests,re,os
3 from bs4 import BeautifulSoup
4
5 print(
6 '''
7 --------------------------------------
8
9 获取Wallhaven图片
10
11 by:冷溪凌寒
12 V 1.0
13 --------------------------------------
14 '''
15 )
16
17 url_list=[]#图片地址列表
18
19 def toplist_source(p,l):#获取热榜页面的所有图片地址
20 print("获取图片地址中,请稍等......")
21 for i in range(int(p)):#遍历图片搜索列表所有页面的图片代码
22 url = "https://wallhaven.cc/toplist?page="+str(i+1)
23 #进入图片搜索列表的某一页
24 p = requests.get(url).text
25 #获取网页源代码文本
26 temp=BeautifulSoup(p,'html.parser')
27 #解析网页源代码的文本,html.parser为解析器
28 result=temp.select('.base #main #thumbs section ul li figure .preview')
29 #html选择器选择到缩略图
30 for i in result:
31 l.append(i['href'])
32 #获取缩略图的href添加到列表
33 print("一共获取到了%s张图片。"%len(l))
34
35 def search_source(s,p,l):#获取搜索页面的所有图片地址
36 for i in range(int(p)):#遍历图片搜索列表所有页面的图片代码
37 url = "https://wallhaven.cc/search?q="+s+"&page="+str(i+1)
38 #进入图片搜索列表的某一页
39 p = requests.get(url).text
40 #获取网页源代码文本
41 temp=BeautifulSoup(p,'html.parser')
42 #解析网页源代码的文本,html.parser为解析器
43 result=temp.select('.base #main #thumbs section ul li figure .preview')
44 #html选择器选择到缩略图
45 for i in result:
46 l.append(i['href'])
47 #获取缩略图的href添加到列表
48 print("一共获取到了%s张图片。"%len(l))
49
50 def mkdir(s):#创建文件夹
51 isExists=os.path.exists(s)#判断是否创建了文件夹
52 if not isExists:
53 os.makedirs(s)#创建文件夹
54 print("创建文件夹'%s',将图片放入'%s'文件夹内。"%(s,s))
55 else:
56 print("已经有'%s'文件夹,将图片放入'%s'文件夹内。"%(s,s))
57
58 def download(s,l):#遍历图片地址列表下载文件
59 num = 1
60 print('------------------------------------------------------------------------------')
61 print('序号\t\t\t图片链接')
62 for i in range(0,len(l)):
63 url=l[i]
64 #进入原图页面
65 html = requests.get(url).text
66 #得到网页源码
67 temp=BeautifulSoup(html,'html.parser')
68 #解析网页源代码的文本,html.parser为解析器
69 result=temp.select('body main section .scrollbox img')
70 #html选择器选择到原图
71 for i in result:
72 reg=(i['src'])
73 #获取原图的地址
74 a = requests.get(reg)
75 f = open(s+"/%s.png"%num, 'wb')#以二进制格式写入文件夹中
76 f.write(a.content)
77 f.close()
78 print("%s.\t\t\t%s"%(num,reg))
79 num = num+1
80 print('------------------------------------------------------------------------------')
81 print("下载结束!")
82
83
84 switch=input("根据名称下载图片请输入1\n下载热榜图片请输入2\n")
85 if switch == '1':
86 search=input("请输入想要搜索的图片(英文):\n")#输入搜索的关键字
87 page=input("请输入想要搜索图片的页数(每页有24张图):\n")#输入Wallhaven网页的页数
88 search_source(search,page,url_list)
89 mkdir(search)
90 download(search,url_list)
91
92 elif switch == '2':
93 page=input("请输入想要搜索图片的页数(每页有24张图):\n")#输入Wallhaven网页的页数
94 toplist_source(page,url_list)
95 search='热榜'
96 mkdir(search)
97 download(search,url_list)
98
99 else:
100 print("输入错误!")