python写动态壁纸_10分钟教你用python更换电脑壁纸

注:本文转载自公众号:木白瞎说

大家好,非常抱歉因为作者懒癌晚期好久没更新(也实在是没写什么值得分享的东西),今天就来诈尸一下(●'◡'●)

今天也没有表情包当引子了,因为做图真的好麻烦啊orz(你说你还能再再再再懒一点吗??(可以!!o(* ̄▽ ̄*)ブ   ))

好了废话不多说先看下效果

思路很简单,总共分三步,第一步,打开冰箱门,啊不对。。

第一步,爬网页

第二步,存图片

第三步,设壁纸

嗯。。就是这么粗暴

因为只是要个图片而已,所以不需要涉及到动态网页

(动态网页我不会55555求大佬教)

静态网页用request和bs4就可以轻松爬取了

轻松个鬼啊,还不是一调试就是一上午

~~~///(^v^)\\\~~~

首先进入看下主函数,呸,首先来看一下要用的库

request bs4用来爬取

os用来保存图片

win32xxx用来设置壁纸

import requestsfrom bs4 import BeautifulSoupimport osimport timeimport win32apiimport win32conimport win32gui

然后再来看看主函数。当然了python是不需要直接写出主函数的入口的,不过这是个从C延续来的好习惯

def main():keyword = input()url = 'https://alpha.wallhaven.cc/search?q=' + keyword + '&categories=111&purity=110&sorting=random&order=desc'print("grasping photo from wallhaven...")HTMLpage = ''while HTMLpage == '':HTMLpage = getHTML(url)print("grap web successfully")photoAddress = parserHTML(HTMLpage)photo = getHTML(photoAddress)if photo != '':imag = getPhoto(photo)LocalImag = savePicture(imag)setWallPaper(LocalImag)if __name__ == '__main__':main()

我爬取的网站是个叫wallhaven的网站,图片质量蛮高,也比较精美,重点是人家会随机推图片,可以帮助我减少很多工作量~~(但是搜不出我最爱的super hero,sad。。。)

/*---------第一步---------*/

爬网页

我爬取的这个网站查看源代码以后发现是没有原图的url的(也可能是我找不到吧),需要进入详细页面才能打开大图,发现原图的地址,所以我们要从搜索了一堆图的网页获取第一张图的详细信息页面的链接,再访问一遍详细页面,才能获取到原图的地址。这一步比较繁琐,主要是chrome打开源代码以后没有排版,挤成一坨,真难看(ノへ ̄、)。。。具体要用到的函数是getHTML和parserHTML

def getHTML(url):try:r = requests.get(url)print("get html successfully")r.raise_for_status()r.encoding = r.apparent_encoding#print(r.text)return r.textexcept:return ""def parserHTML(html):try:soup = BeautifulSoup(html,"html.parser")print(soup.find('a',attrs={'class':'preview'})['href'])return soup.find('a',attrs={'class':'preview'})['href']except:pass

/*---------第二步---------*/

存图片

这一步要用到的是getPhoto和savePicture,套路和第一步类似,这里我在下载以后又延时了一会。因为我第一个爬取的图片是一只噬元兽,但是图片太大了,我当时的网络又不太给力,总之不知道为什么发生了加载一半没加载完,保存了一个残次品

def getPhoto(html):try:soup = BeautifulSoup(html,"html.parser")print(soup.find('img',attrs={'id':'wallpaper'})['src'])return soup.find('img',attrs={'id':'wallpaper'})['src']except:passdef savePicture(imag):root = 'C:\\Users\\10990\\Pictures\\DesktopPaper\\'path = root + imag.split('/')[-1]try:if not os.path.exists(root):os.mkdir(root)if not os.path.exists(path):print("downloading picture")r = requests.get('http:' + imag)print("downloaded")with open(path,'wb') as f:f.write(r.content)time.sleep(5)f.close()print("Picture Saved Successfully")else:print("Picture Exist")return pathexcept:print("fail to get the picture")

/*---------第三步---------*/

设壁纸

这里我实在没什么好说的,因为调用winapi我完全不熟

全都是从CSDN上肉眼爬下来的

(´ー∀ー`)

def setWallPaper(Imag):# 打开指定注册表路径reg_key = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER, "Control Panel\\Desktop", 0, win32con.KEY_SET_VALUE)# 最后的参数:2拉伸,0居中,6适应,10填充,0平铺win32api.RegSetValueEx(reg_key, "WallpaperStyle", 0, win32con.REG_SZ, "2")# 最后的参数:1表示平铺,拉伸居中等都是0win32api.RegSetValueEx(reg_key, "TileWallpaper", 0, win32con.REG_SZ, "0")# 刷新桌面win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER,Imag, win32con.SPIF_SENDWININICHANGE)

不过记得常清理一下硬盘,毕竟爬下来的图片可不会自己删掉~~

另外,每次关机再开机以后,壁纸仍然是你手动设置的壁纸,并不是程序设置的,这是一个待改进的点。当然也可以保证在外用电脑的时候程序给你的是惊喜而不是惊吓,看你如何看待这件事儿咯~~

源代码可以在我的gayhub上找到,链接就在下面的原文链接咯~

hhh最后感谢各位不取关之恩,有啥意见想留言可以私信我,因为是新账号没有评论功能了。有时间的话我会回复然后贴出来的~~反正此号日常不更。最后各位不嫌弃的话点个关注呗,不常更新不打扰的

(o゚v゚)ノ诈尸完毕,接着躺尸~

/*

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值