上一篇
三国演义刘备:我开局被动选择地狱模式
必应网站的背景壁纸每日更新,看着眼热。想效仿弄一个,考虑到壁纸大小需要1920x1080,存储壁纸空间、壁纸占用的流量、日常寻找壁纸工作瞬间打了退堂鼓,除了穷,就是日常太锁碎,自已给自已找不自在,可不可以白嫖必应壁纸?
了解到必应有壁纸 API 的接口,请求的方式还是 get, 白嫖操作不要太多了。
https://cn.bing.com/HPImageArchive.aspx?n=1&format=js&idx=0
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
n | 是 | Number | 控制API返回多少组图片数据,至少需要1组数据,最多返回8组数据 |
format | 否 | String | 返回数据的格式,默认:xml 格式,可支持json格式,参数:js |
idx | 否 | Number | 回朔7天之内的信息,默认:0,代表今天 |
有了壁纸 API接口,自然结合异步 ajax 请求。首先处理防跨域处理,设置 dataType: 'jsonp';第二步请求回调,设置 jsonpCallback: 'callback',获得的结果状态:200。
JSvar callback = function (data) { //异步请求回调函数
console.log('data',data);
}
var url = 'https://cn.bing.com/HPImageArchive.aspx?n=1&format=js&idx=0';
$.ajax({type: 'get', url: url, dataType: 'jsonp', jsonpCallback: 'callback',success: function(result){
console.log('result',result);
}});
信心满满以为白嫖就要成功了,结果必应留了一手:数据没返回,使用 ajax 获取数据宣告失败。世界上没有免费的午餐,如果有,那么以某种你不知道的东西代付了。
即然不能无代价用 ajax 直接求,那么使用 file_get_contents 直接访问页面,多走几步。
PHP$url = 'https://cn.bing.com/HPImageArchive.aspx?n=1&format=js&idx=0';
$result = @file_get_contents($url);
$result = json_decode($result,true);
if(isset($result['images'])) {
echo 'https://cn.bing.com'.$result['images'][0]['url']; //获取第一张壁纸
}
PHPArray
(
[images] => Array
(
[0] => Array
(
[startdate] => 20210110
[fullstartdate] => 202101101600
[enddate] => 20210111
[url] => /th?id=OHR.SierraNevada_ZH-CN0564237735_1920x1080.jpg&rf=LaDigue_1920x1080.jpg&pid=hp
[urlbase] => /th?id=OHR.SierraNevada_ZH-CN0564237735
[copyright] => Pradollano滑雪站,西班牙内华达山脉国家公园 (© NTCo/iStock/Getty Images Plus)
[copyrightlink] => https://www.bing.com/search?q=%E5%86%85%E5%8D%8E%E8%BE%BE%E5%B1%B1%E8%84%89%E5%9B%BD%E5%AE%B6%E5%85%AC%E5%9B%AD&form=hpcapt&mkt=zh-cn
[title] =>
[quiz] => /search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20210110_SierraNevada%22&FORM=HPQUIZ
[wp] => 1
[hsh] => 9ffe8630042e43a2192e8058313f6dc8
[drk] => 1
[top] => 1
[bot] => 1
[hs] => Array()
)
...
)
...
)
※ 壁纸Url链接不是绝对路径,缺少了域名信息,需要主动补充地址完整性。
最新评论Latest comments