python获取Wallhaven图片
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("输入错误!")