每天总是用相同的桌面背景,感觉太没有个性了很无趣,所以就想我可不可以用python脚本实现每天从网上爬取一张图片,定时更换
思路:
1) 从必应网站上爬取一张照片,
2) 图片按照日期保存
3)命令行实现把这张图片设置为桌面背景
4) 设置成功后把前一天的图片删除掉
5) 设置定时器,代码每天执行
1. 爬取图片
计划从网站https://cn.bing.com/上爬取一张图片,因为这个网站每天都会更新一张新的图片正好可以用来设置桌面.
需要安装的库requests 和BeautifulSoup.
通过分析必应网站的静态页面,我们如果想爬取到想要的那张照片,我们要先拿到图片的url. 如下图所示,我们需要通过BeautifulSoup 获取到id=bgImg这个标签的scr属性,然后和必应网站的域名拼接,就获取到了这个图片的URL.
from bs4 import BeautifulSoup import requests bing_domain="https://cn.bing.com/" res=requests.get(bing_domain).text soup=BeautifulSoup(res,features="html.parser") img_url=bing_domain+soup.select("#bgImg")[0].get("src") img_content=requests.get(img_url).content with open("a.jpg","wb") as f: f.write(img_content)
2. 图片名称设置为当前日期
首先想到的是time模块.先获取当前时间的时间戳,然后转换为固定的格式.
date_format=time.strftime("%Y-%m-%d",time.localtime()) print(date_format) pic_name=os.path.abspath(os.path.curdir)+"/"+date_format+".jpg"
3. 脚本实现 mac笔记本更换桌面
这个的实现,一开始真的是难到了我,因为我刚使用mac笔记本没多久,不知道怎么用命令行更换桌面背景,后来网上查了很多的资料.终于找到了解决方法,用osascript.
osascript -e 'tell application "System Events" to set picture of every desktop to "%s"'%pic_name)
其实前3步骤基本实现了要做的功能, 步骤4和步骤5,等有时间了再补充