Python - 定时自动获取 Bing 首页壁纸

news/2025/2/5 6:56:24/

一.引言

Bing 首页的壁纸好看且每日更新,下面介绍如何使用 python 每日自动获取壁纸并保存。

二.手动获取

自动获取前先介绍下如何手动获取,主要是了解壁纸的网页形式。

1.打开开发者模式

可以直接 F12 快捷键进入开发模式,在右侧栏中找到 s.cn.bing.net 选项

2.打开新的 Tab

双击对应位置选择 open in new Tab

 即可得到完整壁纸,右键选择另存为即可保存至指定位置:

Tips:

这里获取的网址连接为:

https://s.cn.bing.net/th?id=OHR.LongsPeak_EN-CN6019073969_1920x1080.jpg&rf=LaDigue_1920x1080.jpg

其中 https://s.cn.bing.net 为前缀,/th?id=OHR.LongsPeak_EN-CN6019073969_1920x1080.jpg&rf=LaDigue_1920x1080.jpg 为图像后缀,二者拼接即可得到壁纸地址,后续通过 python 爬虫也是基于该地址获取壁纸。

三.自动获取

1.官方API

Bing 官方提供 API 获取线上网页壁纸:官方API

https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN

 主要有 format、idx、n、mkt 四个参数:

参数含义
format返回数据形式 js - json xml - xml
idx截止天数 0-今天 -1 - 截止至明天 1 截止至昨天
n返回数量        
mkt地区 zh-CN - 国区

测试过程中发现 n 的数量总是返回1。

2.Postman 调用接口

使用 Postman Get Api 查看下接口返回 json 的大致形式,没有 postman 也不影响后续获取壁纸,获取壁纸只需要 python 即可。

可以看到当前壁纸的详细信息,壁纸对应的地址是:"落基山国家公园的朗斯峰,科罗拉多州 (© Andrew R. Slaton/Tandem Stills + Motion),非常的漂亮。其 images 数组内还包含 url ,该 url 形式为:

 "url": "/th?id=OHR.LongsPeak_ZH-CN5927119555_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp"

与我们刚才手动寻找打开的 tab 地址只差前缀 https://s.cn.bing.net:

https://s.cn.bing.net/th?id=OHR.LongsPeak_EN-CN6019073969_1920x1080.jpg&rf=LaDigue_1920x1080.jpg

所以 python 的执行逻辑比较清晰:

A.调用 API 获取 Json

B.通过 Json 获取壁纸地址,拼接前缀得到最终壁纸地址

C.将对应 content 生成 jpg 保存至本机

3.Python 实现

#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import jsonheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36","Connection": "close",
}def dumpBingWallpaper():# 解析 URLn = 1idx = 1url = "https://www.bing.com/HPImageArchive.aspx?format=js&idx={}&n={}".format(idx, n)res = requests.get(url, headers=headers)res.encoding = 'utf8'jsonData = json.loads(res.text)uri = jsonData['images'][0]['url']# 获取图像地址与信息img = requests.get("https://s.cn.bing.net/" + uri, headers=headers).contentdesc = str(jsonData['images'][0]['copyright']).split(",")[0]dt = jsonData['images'][0]['startdate']# 输出地址output = '/Users/xudong11/Desktop/{}.jpg'.format(desc + "_" + dt)out = open(output, 'wb')out.write(img)out.close()if __name__ == "__main__":dumpBingWallpaper()

通过 copyright 和 startdate 获取图像简介与日期作为输出图像的名称,运行后在指定位置获取目标壁纸:

Tips:

通过 chorm 开发者工具获取图像信息的方法需要引入开发者工具包,有兴趣的同学也可以实现:

from selenium import webdriveroptions = webdriver.ChromeOptions()
Chrome = webdriver.Chrome(options=options, desired_capabilities=capabilities)
wait = WebDriverWait(Chrome, 5)

4.定时执行

A.定时脚本

首先添加定时 shell 脚本 run.sh,PWD 为 python 所在文件夹目录:

#!/bin/bashpath=${PWD}
cd $path
python DumpBingPic.py

B.crontab 定时启动

20 11 * * * 代表每天 11:20 下载 Bing 图片:

20 11 * * * source ~/.bash_profile && cd ${PWD} && sh run.sh

无需手动运行脚本,每天定时保存 bing 壁纸,非常的奈斯👍

四.Windows 聚焦

除了 Bing 壁纸,之前也整理过 windows 聚焦的开机壁纸获取方式,并最终生成 .exe 的可执行文件,windows 的同学有兴趣也可以继续参考:Python 提取Windos聚焦的登陆图片,运行 exe 即可获取最近 windows 聚焦的开机壁纸:


http://www.ppmy.cn/news/687873.html

相关文章

【Win】查看Bing壁纸每天更新的图片

查看Bing壁纸每天更新的图片 👀问题描述✔解决方法 🔎嘿,这里是慰慰👩🏻‍🎓,会发各种类型的博客,智能专业,从事前端🐾 🎉如果有帮助的话&#xf…

java获取Bing壁纸

首先声明这是看了大佬得得博客封装的一个获取bing壁纸的方法 目的 平时觉得bing的壁纸挺好看的的就想获取它的把一些图片保存起来,所以就找了一下相关信息,于是就有了这篇博客。 环境准备 这里我使用的是springboot 自带的 【RestTemplate】来请求接口…

双击下载当日bing壁纸

... 语言 go直接贴代码 语言 go 其实python 更加方便,但是不好打包,,不说,go就是香 直接贴代码 原本以为,还要一些其他的东西,但是发现直接赢刚就是完事,,代码简单,这里…

Python从Bing壁纸的API接口保存图片

先贴代码: from urllib import request from lxml import etree from time import localtime from os import getcwddef Get_Image():urlrhttps://cn.bing.com/HPImageArchive.aspx?formatxml&idx0&n1&mktzh-CNfor res0 in etree.HTML(request.urlope…

使用Python获取bing壁纸接口

原文地址–>点击进入阅读 注意:该接口和代码仅供学习使用!请勿将传回的壁纸用于非法用途!请尊重版权!树立版权意识! 由于读者自身行为导致的侵权,作者概不负责! Bing壁纸 Bing的壁纸是每天…

python爬虫 bing壁纸

最近学习python爬虫,写了一个小例子.主要用来爬取bing壁纸. 源码如下: ‘’’ import requests from bs4 import BeautifulSoup import re import os from urllib.request import urlretrieve import time from email.header import Header from email.mime.text import …

建了个网站,可以下载每日bing壁纸

每日bing壁纸 地址 : http://www.rampage.xin/bing/

设置bing桌面壁纸

golang语言编写,设置windows桌面壁纸,图片来自于必应网站(cn.bing.com) github源码地址:https://github.com/tujiaw/gowallpaper 有兴趣的Star一下吧 编译好的程序:https://pan.baidu.com/s/1l5OW9GeuUF0…