Python3爬取Bing每日图片,并设置为电脑桌面

作为鄙视链底层的“脚本小子”,到处找源码然后自己修改的小菜鸟,今天记录使用Python爬取必应每日图片,保存后设置为电脑图片的小项目。

1 - 简述

本文使用Python3,爬取BingImage作为电脑桌面壁纸。

将爬取的图片以当前日期命名,存入BingImg文件夹并设置为电脑桌面(运行程序自动创建该文件夹)。

bing.com每天更换一张背景图,大部分都属佳品,用来当作壁纸十分合适。但是这个脚本只能是运行一次就设置一次。为了解决这个问题,我们可以给系统设置一个定时任务,每天触发一次。这样就可以实现每天自动更换BingImage作为电脑桌面了。

2 - 核心代码

2.1 - 爬取BingImage

def getImage(local):
	url = 'https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1'  # 调用的 json 文件(format=js)
	os.makedirs('BingImg', exist_ok=True)  # 生成 BingImg 文件夹用来保存图片

	con = requests.get(url)
	content = json.loads(con.text)
	picUrl = 'https://cn.bing.com' + content['images'][0]['url']
	if picUrl == '':
	    print('找不到图片!程序出错啦!')
	    sys.exit()
	else:
	    print('获取图片地址成功:' + picUrl)
	    print('开始下载···')  
	    read = requests.get(picUrl)

	f = open(os.path.join('BingImg', '%s.jpg' % local), 'wb')
	f.write(read.content)
	f.close()
	print('下载成功!')

2.2 - 设置为桌面

def setWallPaper(pic):
  print('正在更新桌面背景.....')
  regKey = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control Panel\\Desktop",0,win32con.KEY_SET_VALUE)
  win32api.RegSetValueEx(regKey,"WallpaperStyle", 0, win32con.REG_SZ, "2")
  win32api.RegSetValueEx(regKey, "TileWallpaper", 0, win32con.REG_SZ, "0")
  # refresh screen
  win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER,pic, win32con.SPIF_SENDWININICHANGE)
  print('更新完辽!')
  print('-'*20)
  print('开心么?\n鹅鹅鹅饿鹅鹅鹅饿.....')

2.3 - 设置为每日自动执行

设置步骤:
右击“计算机”→管理→计划任务程序→创建基本任务

接下来按照指引完成设置即可。
在这里插入图片描述

3 - 完整代码


# 爬取今日Bing Image并设置为桌面

import sys
import os
import time
import json
import requests
from PIL import Image 
import win32api, win32gui, win32con


def getImage(local):
	url = 'https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1'  # 调用的 json 文件(format=js)
	os.makedirs('BingImg', exist_ok=True)  # 生成 BingImg 文件夹用来保存图片

	con = requests.get(url)
	content = json.loads(con.text)
	picUrl = 'https://cn.bing.com' + content['images'][0]['url']
	if picUrl == '':
	    print('找不到图片!程序出错啦!')
	    sys.exit()
	else:
	    print('获取图片地址成功:' + picUrl)
	    print('开始下载···')  
	    read = requests.get(picUrl)

	f = open(os.path.join('BingImg', '%s.jpg' % local), 'wb')
	f.write(read.content)
	f.close()
	print('下载成功!')


def showImage(imgName,local):
	img = Image.open('%s/BingImg/%s.jpg'%(imgName,local))
	img.show()


def setWallPaper(pic):
  print('正在更新桌面背景.....')
  regKey = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER,"Control Panel\\Desktop",0,win32con.KEY_SET_VALUE)
  win32api.RegSetValueEx(regKey,"WallpaperStyle", 0, win32con.REG_SZ, "2")
  win32api.RegSetValueEx(regKey, "TileWallpaper", 0, win32con.REG_SZ, "0")
  # refresh screen
  win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER,pic, win32con.SPIF_SENDWININICHANGE)
  print('更新完辽!')
  print('-'*20)
  print('开心么?\n鹅鹅鹅饿鹅鹅鹅饿.....')


if __name__=='__main__':
	local = time.strftime("%Y-%m-%d")  # 以当天日期命名文件
	imgName = os.getcwd().replace("\\","/") # 获取当前文件夹地址
	#print(local)
	getImage(local)
	#showImage(imgName,local)
	pic = '%s/BingImg/%s.jpg'%(imgName,local)	# 获取图片路径
	setWallPaper(pic)

4 - 运行结果

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章