文章采集完(网上最好的优质壁纸,怎么样才能找到你中意的壁纸 )

优采云 发布时间: 2021-11-28 15:03

  文章采集完(网上最好的优质壁纸,怎么样才能找到你中意的壁纸

)

  也许你之前在百度上搜索壁纸,或者使用一些国内的图片资源站。相信你也被那些复杂的积分系统或者收费方式折磨过,但是在Wallhaven之后,你要做的就是把这个网站采集起来。

  Wallhaven 被誉为“互联网上最好的壁纸”。这一点都不谦虚。真是“天生骄傲”。这么大的口气,当然得有什么引以为傲的了。

  它有一个简单的界面,没有广告。以上壁纸虽然基本都是用户上传的,但绝对是一流的高画质高清壁纸。

  类别过滤器

  打开这个网站,你会发现一个幸福的烦恼:海量的优质壁纸,怎么才能找到自己喜欢的壁纸呢?

  首先点击首页的这个Toplist,可以看到Wallhaven将壁纸按照General、Anime、People(一般、*敏*感*词*、人物)分为三种。这只是最基本的分类。

  同时,它还提供了三类:SFW、Sketchy和NSFW。这是什么意思?我不会在这里打电话。我直接给你解释。SFW 是 Safe for Work 的缩写。这是两者之间的程度。

  这种分类没有任何问题。在家可以在电脑上设置壁纸,但是在办公室里,工作时不适合在电脑屏幕上看到流鼻血,你懂的。不得不说,这种对壁纸图片“分级”的操作,可以让我们更容易的找到自己想要的壁纸图片。

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

  要知道,在网站的壁纸中,收录的海量壁纸并不少见。真正的难点在于是否有高效的分类检索机制,让你快速锁定自己喜欢的壁纸。

  爬行巨蟒领主

  接下来想采集页面图片进行采集排序,并在电脑上设置幻灯片壁纸,所以写了一个python代码爬取img,主要是因为一张一张保存漂亮的图片太费力了。

  大体思路是先看html的整体结构,看到图片集合固定在链接前面,然后下拉,后面跟着page=x,再看一遍,可以看到所有图片都是在格式中,图片的真实地址就是这个。那会容易些。

  使用BeautifulSoup库从HTML文件中提取数据,定义getpages_HTML函数连接wallhaven壁纸页面,定义getURL获取href,定义parseHTML函数,解析html页面中的img src标签,返回.jpg文件下载链接,getDownload函数下载到自己在定义Path下,main函数开始定义Path和url,输入页码,如果第一页没有添加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)

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线