采集最惊艳的壁纸网站
   资源分享   7 评论   669 浏览

采集最惊艳的壁纸网站

   资源分享   7 评论   669 浏览

简单介绍

像壁纸之类的文章还从来没有推荐过,主要是觉得这类东西每个人的要求和喜欢的类型又不一样,喜欢什么网上就搜什么壁纸。
但是更多人喜欢折中的一种壁纸,就是怎么看怎么舒服的那种。如果要安利一个壁纸网站的话,那么不管你问我多少遍,我都强烈推荐 Wallhaven.cc

收藏一下

也许你之前还在通过百度搜索壁纸,或者是使用国内的一些图片资源站,相信你也曾被那些复杂的积分制度或者收费方式折磨不堪,但有了 Wallhaven 之后,你所要做的就是把这个网站收藏好就行了。

Wallhaven 号称「网上最好的壁纸」,这是一点也不谦虚,真是「天生骄傲」,口气这么大,当然肯定有它骄傲的地方。
它界面简洁,没有任何广告。虽然这上面的壁纸基本都是用户上传的,但绝对都是一等一的优质高分辨率壁纸。

类别筛选

在你打开这个网站之后,你会发现一个幸福的烦恼:如此海量优质的壁纸,怎么样才能找到你自己中意的壁纸呢?
首先,在首页点击这个Toplist可以看到 Wallhaven 按照 General,Anime,People(一般,动漫,人物)把壁纸分成了三种,这只是最基本的分类。

同时还提供了 SFW、Sketchy、NSFW 3 个类别,是什么意思呢?这里不喊课代表了,我直接给大家解释一下,SFW 就是 Safe for Work 的缩写,即为适合工作场合的壁纸,有适合工作场合看的,自然就会有不适合上班看的 NSFW,至于 Sketchy 就是介于两者之间的程度。

这样分类没毛病,在家里的电脑里你怎么设置壁纸都行,但是在办公室,边工作边看着电脑屏幕流鼻血也不太合适,你懂的。不得不说,这种给壁纸图片「分级」的骚操作,可以让我们更方便找到想要的壁纸图片。

在搜索框下方,有一系列标签,可以根据你喜欢的标签来进行选择。如果上面提供的标签还不够,那就点击更多标签,会有更丰富的标签,还会显示该标签下有多少张壁纸以及浏览数。

要知道在壁纸网站中,收录海量壁纸并不稀奇,真正的难点在于有没有一套高效的分类和检索机制,这样才能便于快速锁定自己心仪的壁纸。

给爷Python爬

下面我想针对Favorites排序来个页面图片搜集给电脑设置幻灯片壁纸,因此写个Python代码爬取img,主要是一张张保存精美图片太费劲了。
大体思路就是先查看html的整体架构,看到图片集合都是前面链接固定,然后下拉就后面跟着page=x,之后再看,可以看到所有图片都是 https://wallhaven.cc/w/xxxxxx 的格式,最后图片真实地址https://w.wallhaven.cc/full/aa/wallhaven-aaxxxx.png 长这样,那就好办了。
选用BeautifulSoup库,可以从HTML文件中提取数据,定义getpages_HTML函数连接wallhaven壁纸页面,定义getURL获取href,定义parseHTML函数,解析html页面里的img src标签,返回.jpg文件下载链接,getDownload函数下载到自定义Path下,主函数开始定义Path、url,输入Page页码,如果第一页就不加page参数直接把第一页全部图片保存,不然就循环1到该页保存图片地址。最后循环存下的地址下载。

import requests
from bs4 import BeautifulSoup
import os

def getpages_HTML(url,info = None):#连接wallhaven随机壁纸页面
    try:
        r = requests.request('GET',url = url,params = info)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        print("Failed")


def getURL(html,lst):

    soup = BeautifulSoup(html,'html.parser')
    trs = soup.find_all('a')
    for tr in trs:
        if tr.get('href') is not None and len(tr.get('href')) == 29:
            lst.append(tr.get('href'))#提取href


def parseHTML(html):
    
    soup = BeautifulSoup(html,'html.parser')
    img = soup.find_all('img')#解析html页面里的img src标签
    src = img[2].get('src')
    return src #返回.jpg文件下载链接

def getDownload(url,path):
    try:
        r = requests.get(url)
        r.raise_for_status()
        with open(path,'wb')as f:
            f.write(r.content)
    except:
        return "Failed"
    

if __name__ == '__main__':

    pic_dir = 'C://Users//Administrator//Pictures//wallpapers'
    if not os.path.exists(pic_dir):
        os.mkdir(pic_dir)

    infoDict = {}
    lst = []
    page_num = int(input('plese input the page number:'))
    url = 'https://wallhaven.cc/search?categories=110&purity=100&sorting=favorites&order=desc'

    if page_num == 1:#对输入数字进行判断
        infoDict['page'] = 1
        html = getpages_HTML(url = url,info = infoDict)
        getURL(html,lst)
    else:
        for i in range(1,page_num + 1):
            infoDict['page'] = i
            html = getpages_HTML(url = url,info = infoDict)
            getURL(html,lst)

    for i in range(len(lst)):
        pic_html = getpages_HTML(lst[i],info = None)
        downloader = parseHTML(pic_html)
        path = pic_dir + '//' + lst[i][-6:] + '.jpg'
        getDownload(downloader,path)

本文由 YOYLING. 发表, 最后编辑时间为:2020-09-14 13:53
如果你觉得我的文章不错,不妨鼓励我继续写作。

发表评论
选择表情
  1. mark

       Windows 10   Chrome 85 回复
  2. 特别好,我喜欢它可以选定尺寸下载

       Windows 10   Chrome 85 回复
  3. 牛逼,佩服

       Windows 10   Firefox 80 回复
  4. 老虎不吃人

    卧槽!!!马了马了,感谢! icon_rolleyes.png

       Windows 10   Chrome 86 回复
  5. 不错啊 4k 壁纸挺多的。还免费

       Windows 10   Chrome 85 回复
    1. YOYLING. 博主
      @云帆沧海

      我文章还没写完,你就来啦 icon_biggrin.png

         Windows 10   Chrome 84 回复
      1. @YOYLING.

        刚打开就看到了,这次总算可以给我的4K大屏换几张壁纸了,国内的4K资源免费的太少

           Windows 10   Chrome 85 回复
Top