几年前写过一篇用 Python 下载每日必应背景图的方法,不过由于必应网站更新,之前的方法失效了。
这次抽空更新了一下。
适用的 Python 的版本为 Python3 及以上。
因为必应官方限制,只能下载最近 8 张图。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# -*- author: uncoverman-*-
# python3抓取bing主页所有背景图片
import urllib.request,json,sys,os
def get_bing_backphoto():
if (os.path.exists('photos')== False):
os.mkdir('photos')
for i in range(0,8):
jsonurl = 'https://cn.bing.com/HPImageArchive.aspx?format=js&idx='+str(i)+'&n=1'
jsonstr = urllib.request.urlopen(jsonurl).read().decode('utf-8')
if jsonstr == 'null':
print( 'open & read bing error!')
sys.exit(-1)
# 将json转化为字典
imgdict= json.loads(jsonstr)['images'][0]
# 获取字典中的url,组装下载链接
url = 'https://cn.bing.com'+imgdict['url']
# 获取字典中的urlbase,组装文件名
urlbase = imgdict['urlbase']
left = urlbase.index('.')
name = urlbase.replace(urlbase[:left+1],'')+'.jpg'
savepath = 'photos/'+ name
# 下载、保存
urllib.request.urlretrieve(url, savepath)
print (name + ' save success!')
get_bing_backphoto()
使用方法:将以上代码复制到后缀为.py
的文件,然后运行.py
的文件即可。
2020-02-22 Update:好友建议将正则表达式改为json
方式解析,思路清晰,扩展性更好。代码已修改。