No.5 下载 Bing 每日壁纸并设为桌面

一、简介

网址:https://cn. bing .com/?scope=web&FORM=ANNTH1

效果:下载壁纸

使用框架:requests、win32gui、win32con、win32api

难度系数:✩✩

二、教程

1. 简介

微软必应(英文名: Bing )是微软公司于2009年5月28日推出,用以取代Live Search的全新搜索引擎服务。为符合中国用户使用习惯, Bing 中文品牌名为“必应”。「 Bing 」搜索最大的“特色”且与百度、Google 最大的不同就在于,它每天都会更新一张高清精美的背景图片,大多数是风景摄影作品,质量都非常高。

我们今天的任务就是下载下来 Bing 每天更新的壁纸,并且将他设为我们自己本地的桌面。

2. 网站分析

打开 Bing

在这里插入图片描述

后面这张美丽的壁纸就是我们本次的目标了。

审查网络请求我们发现了我们需要的信息:

在这里插入图片描述

观察请求链接,分析数据:

https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&nc=1596814004872&pid=hp&scope=web&FORM=BEHPTB&uhd=1&uhdwidth=2880&uhdheight=1620
  • nc:当前时间的13位时间戳
  • uhdwidth:宽为 2880
  • uhdheight:高为 1620

3. 构造爬虫

这次的爬虫比较简单,也没有反爬措施,我们就直接上代码了

import requests
import time
import os

# 提取链接
url = "https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&nc={}"
timestamp = round(time.time() * 1000)
res = requests.get(url.format(timestamp))
pic_url = res.json()['images'][0]['url']
pic_url = "https://cn.bing.com{}".format(pic_url)

# 下载图片
today = time.strftime("%Y-%m-%d")
content = requests.get(url=self.pic_url).content
# 得到图片的绝对路径
self.pic_path = r"{}\img\{}.jpg".format(os.getcwd(), today)
with open(self.pic_path, 'wb') as f:
    f.write(content)

4. 设置桌面壁纸

设置桌面壁纸我们需要调用 Windows 的接口,我们需要使用 pip 下载 win32gui、win32con、win32api 这三个模块。

(Ps:我记得下载 win32gui 的时候有一些坑,小伙伴们可能需要自行解决一下)

代码:

# 打开注册表
reg_key = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER, "Control Panel\\Desktop", 0, win32con.KEY_SET_VALUE)
# 2:拉伸  0:居中  6:适应  10:填充
win32api.RegSetValueEx(reg_key, "WallpaperStyle", 0, win32con.REG_SZ, "6")
# 设置桌面背景,路径需要传递绝对路径
win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, pic_path, win32con.SPIF_SENDWININICHANGE)

5. 后续

偶然间发现 Microsoft 出了 Bing Wallpaper 这款应用,的功能就是获取每天 Bing 的壁纸并设为桌面,感兴趣的小伙伴们可以看看。

6. 完整代码

传送门

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值