这个示例使用的Python版本为3.7版本,

一、bing壁纸接口

访问bing的官网,通过浏览器开发者工具,查看网络可以找到一个请求壁纸的接口,至于怎么判断的,我是发现当我把鼠标放在切换壁纸的左右箭头时,发现发送了一个请求,查看请求里面是有当前的壁纸信息的,链接、描述等等……

于是乎得到了这个接口,这个接口似乎就是获取壁纸信息的接口了

https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&nc=1600743189543&pid=hp

再结合网上收集的资料,可以找到链接上的参数解释

参数

说明

可能的值

format

返回数据格式,固定是json的

js

idx

倒数第几天的壁纸,最大为7天内,正整数表示倒数第几天

0,1,2 ... 7

n

一次获取多少张图片,最大值为7

1,2 ... 7

nc

时间戳,以毫秒表示

1600743189543

pid

不知道这个参数有啥用

hp

二、Python程序

首先肯定是读取接口的返回数据了,这次使用的是requests框架,可以使用pip安装

pip install requests

获取壁纸json数据

#!/usr/bin/python

import requests

import time

# 时间戳

timestamp = str(int(time.time() * 1000))

# 拼接请求地址

url = 'https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&nc=' + timestamp + '&pid=hp'

# 请求头,模拟浏览器UA

headers = {

'User-Agent': ' '.join(['Mozilla/5.0 (Windows NT 10.0; Win64; x64; ServiceUI 14)',

'AppleWebKit/537.36 (KHTML, like Gecko)', 'Chrome/70.0.3538.102', 'Safari/537.36',

'Edge/18.18363'])

}

r = requests.get(url=url, headers=headers)

result = r.json()

通过上面的请求接收到的json类似下面的格式,注意我们需要的图片是在$.images[*].url这里,虽然没写完整的url,不过经过尝试也可以知道是bing的域名了

{

"images": [{

"startdate": "20200921",

"fullstartdate": "202009211600",

"enddate": "20200922",

"url": "/th?id=OHR.Matamata_ZH-CN8111830275_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp",

"urlbase": "/th?id=OHR.Matamata_ZH-CN8111830275",

"copyright": "马塔马塔附近的霍比特人村,新西兰北岛 (© 500px Asia/Getty Images)",

"copyrightlink": "https://www.bing.com/search?q=%E9%A9%AC%E5%A1%94%E9%A9%AC%E5%A1%94&form=hpcapt&mkt=zh-cn",

"title": "",

"quiz": "/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20200921_Matamata%22&FORM=HPQUIZ",

"wp": true,

"hsh": "fab9fa6464d63e134ae0415d9f67aac5",

"drk": 1,

"top": 1,

"bot": 1,

"hs": []

}],

"tooltips": {

"loading": "正在加载...",

"previous": "上一个图像",

"next": "下一个图像",

"walle": "此图片不能下载用作壁纸。",

"walls": "下载今日美图。仅限用作桌面壁纸。"

}

}

获取到图片地址后,就可以下载图片了,再结合上面的代码,加上下面的保存图片代码

# 获取第一个图片的链接

image_url = result['images'][0]['url']

# 拼接上bing的域名

image_url = 'https://cn.bing.com' + image_url

# 定义图片保存地址

save_image_file = '/opt/images/bing.jpg'

# 下载图片

r = requests.get(url=image_url, headers=headers)

# 注意要以二进制只写打开文件

with open(save_image_file, 'wb') as f:

# 图片的二进制数据

f.write(r.content)

好了,图片下载好并保存了,根据bing接口返回的数据,根据网友们的说法,最大可以获得16张bing壁纸图片,通过跳转idx和n这两个参数,有兴趣可以试试,这里我就不再多说了,另外这个程序可以再做一些拓展,把多张bing壁纸保存下来。

完整的代码如下

#!/usr/bin/python

import requests

import time

# 时间戳

timestamp = str(int(time.time() * 1000))

# 拼接请求地址

url = 'https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&nc=' + timestamp + '&pid=hp'

# 请求头,模拟浏览器UA

headers = {

'User-Agent': ' '.join(['Mozilla/5.0 (Windows NT 10.0; Win64; x64; ServiceUI 14)',

'AppleWebKit/537.36 (KHTML, like Gecko)', 'Chrome/70.0.3538.102', 'Safari/537.36',

'Edge/18.18363'])

}

# 发送请求

r = requests.get(url=url, headers=headers)

# 将响应的字符串转化为json数据,即dict类型

result = r.json()

# 获取第一个图片的链接

image_url = result['images'][0]['url']

# 拼接上bing的域名

image_url = 'https://cn.bing.com' + image_url

# 定义图片保存地址

save_image_file = '/opt/images/bing.jpg'

# 下载图片

r = requests.get(url=image_url, headers=headers)

# 注意要以二进制只写打开文件

with open(save_image_file, 'wb') as f:

# 图片的二进制数据

f.write(r.content)

还有微软官方也推出了bing壁纸的Windows版,不介意壁纸上有logo的话可以尝试下,官方地址:

如果能看到最后,或对你有帮助的话,欢迎在评论区留言一起交流。

以上就是Python 下载Bing壁纸的示例的详细内容,更多关于Python 下载Bing壁纸的资料请关注脚本之家其它相关文章!

python主题壁纸下载_Python 下载Bing壁纸的示例相关推荐

  1. python主题壁纸下载_Python 下载Bing壁纸

    这个示例使用的Python版本为3.7版本, 一.bing壁纸接口 访问bing的官网,通过浏览器开发者工具,查看网络可以找到一个请求壁纸的接口,至于怎么判断的,我是发现当我把鼠标放在切换壁纸的左右箭 ...

  2. python主题壁纸下载_Python开发专属壁纸下载与轮换程序

    本人对于壁纸一直偏佛系,不爱特意去找一堆壁纸.因此用Python简单地搞了一个自动下载壁纸,定时随机轮换的功能来自娱自乐,顺便分享给大家. 原文链接:https://www.codernice.top ...

  3. 必应壁纸php,PHP版Bing壁纸下载源码

    写了个小程序,用来下载Bing壁纸,有访问就会自动下载最新7天的,然后保存在服务器. http://bing.menglei.info/ 原理很简单,使用bing的接口 bing的接口及参数说明 ht ...

  4. python中config命令_Python config.config方法代码示例

    本文整理汇总了Python中config.config方法的典型用法代码示例.如果您正苦于以下问题:Python config.config方法的具体用法?Python config.config怎么 ...

  5. python连接redis哨兵_Python redis.sentinel方法代码示例

    本文整理汇总了Python中redis.sentinel方法的典型用法代码示例.如果您正苦于以下问题:Python redis.sentinel方法的具体用法?Python redis.sentine ...

  6. python程序异常实例_Python werkzeug.exceptions方法代码示例

    本文整理汇总了Python中werkzeug.exceptions方法的典型用法代码示例.如果您正苦于以下问题:Python werkzeug.exceptions方法的具体用法?Python wer ...

  7. python列表get方法_Python json.get方法代码示例

    本文整理汇总了Python中json.get方法的典型用法代码示例.如果您正苦于以下问题:Python json.get方法的具体用法?Python json.get怎么用?Python json.g ...

  8. python modifysetup什么意思_Python pyinotify.IN_MODIFY属性代码示例

    本文整理汇总了Python中pyinotify.IN_MODIFY属性的典型用法代码示例.如果您正苦于以下问题:Python pyinotify.IN_MODIFY属性的具体用法?Python pyi ...

  9. python re 简单实例_Python re.search方法代码示例

    本文整理汇总了Python中re.search方法的典型用法代码示例.如果您正苦于以下问题:Python re.search方法的具体用法?Python re.search怎么用?Python re. ...

最新文章

  1. 鲁迅散文——狗的驳诘
  2. c# 注册表操作,创建,删除,修改,判断节点是否存在
  3. 使用TMG2010企业版组建大型***网络之3-配置NLB
  4. 仿微博国际版首页点击显示分组列表(popupwindow悬浮阴影效果)
  5. 【转】java io 总结(图)
  6. vue websocket 实时渲染页面
  7. java 多线程初入2
  8. 数据库容灾、复制解决方案全分析
  9. c if标签怎么用android,android – 使用NDK将YUV解码为C/C++中的RGB
  10. [UVA-1218] Perfect Service(树的最小支配集)
  11. Android 音频系统:从 AudioTrack 到 AudioFlinger(全)
  12. 我的第一个WM5程序
  13. paip.python 调用qt ui 总结
  14. java mysql 学生成绩管理系统_java简单学生成绩管理系统
  15. 数据库多表查询关联查询SQL语句
  16. JS搜索省份匹配出省份的所有城市
  17. python编程基础-上海交通大学版答案
  18. 用Python物理建模的第一本书终于来啦
  19. 百度2017春招笔试真题编程题集合--买帽子
  20. 不拆微动,一招解决鼠标双击问题

热门文章

  1. 如何在ubuntu上写一个类似sl跑火车指令,“跑甜甜圈”
  2. 利用zlib压缩和解压gzip文件
  3. Python30行代码实现微信聊天机器人(基于WXPY+百度理解与交互技术UNIT)
  4. 转~新手必备网站包含的几个模块
  5. 计算机屏幕角度,电脑屏幕什么角度放置比较好?
  6. 编程(从入门到入土)8
  7. 我的Java学习之路(六)-- 银行卡系统
  8. photoshop练习
  9. wps如何取消自动编号?试试这3种方法
  10. ,,,,,《《》》,,,,,