目录
大家都知道必应官网每天会更新一张高质量的背景图,如下图(时间为2018年9月2日)
而且必应的每日的每日壁纸非常漂亮,质量非常高。这里就有很多小伙伴们想把这个图片下载下来。下载的方法非常多,比如打开开发者模式找到原图保存等等,我就不一一列举了,网上一搜一大堆。这里可以给大家推荐一个网站,https://bing.ioliu.cn/,作者将必应近期的壁纸都展示在了上面,大家可以下载。
到这里单纯想获取图片的办法已经介绍完了。不过我今天的主题是如何从api的层面来获取壁纸,以及如何将该壁纸在合法的情况下动态的引入自己的网站。
首先,先给大家看一下我个人的网站(比较简单,没做设计,大神勿喷),我的网站每日同步获取必应的壁纸。接下来就教不会的小伙伴一步一步去实现。
获取Api
关于必应壁纸api的文章也特别多,也有很多小伙伴自己封装了接口提供给大家使用,我直接介绍官方的api
https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN
首先分析一下这个接口含义,直接看后面的请求参数:
参数名称 | 值含义 |
format (非必需) | 返回数据格式,不存在返回xml格式
|
idx (非必需) | 请求图片截止天数
|
n (必需) | 1-8 返回请求数量,目前最多一次获取8张 |
mkt (非必需) | 地区
|
以上面url为例,可以看到返回内容为:
此时就可以得到图片部分地址了,然后通过域名+部分地址就可以直接获取图片了,如下:
https://cn.bing.com/az/hprichbg/rb/VenetianRowing_ZH-CN6668445308_1920x1080.jpg
个人网页引入
通过上面的方式在浏览器是可以直接看到图片的,但是要在自己的网站里引入的话,还会有一些问题。
跨域
直接请求是肯定会遇上跨域问题的,这里不多介绍跨域了,感兴趣的同学可以看一下这里,常用的解决办法,比如:jsonp、cors在这里明显是不合适的,我推荐大家使用nginx 做一个正向代理,将请求通过nginx代理到真正的服务器地址。
请求配置
需要注意的是,在请求地址前加上一个nginx匹配规则。
let format = 'js'
let idx = '0'
let n = '1'
let mkt = 'zh-CN'
let = options ={
//...
}
let imgUrl = '/proxy/' + 'HPImageArchive.aspx?' + `format=${format}&idx=${idx}&n=${n}&mkt=${mkt}`
//这里proxy就是Nginx匹配规则,可自定义
fetch(imgUrl,options).then(
//...
)
nginx配置
在server中配置如下内容
location /proxy/ {
rewrite ^/proxy/(.*)$ /$1 break; #对加了proxy前缀的请求加以区分,真正访问的时候移除这个前缀,这个前缀需要自定义
proxy_pass https://cn.bing.com; #将真正的请求代理到真实的服务器地址
}
通过上面的所有配置,重启nginx,就可以愉快的获取图片url了!
这里,我也推荐一下一个封装比较完善的请求api github地址,还可以获取不同分辨率以及模糊程度的图片。
以上内容仅供学习使用