WIXOO >> 设计与技术 >> 代码技术 >> 用JSON获取Bing每日背景图片

当前位置:设计与技术 >> 代码技术 >> 用JSON获取Bing每日背景图片

用JSON获取Bing每日背景图片

[来源:橙色阳光] [作者:不详] [日期:17-03-09] [热度:]
关键字:用JSON获取Bing每日背景图片

[较为靠谱的方法 - To:2017-01-25更新]

经过访问BING的网址最终发现,bing中文网一直在提供每日更新背景图片壁纸的json数据。

访问网址:http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1

根据上面地址的结构,我暂时研究到就三项属性有效,他们分别是

1、format,非必要。我理解为输出格式,不存在或者不等于js,即为xml格式,等于js时,输出json格式;

2、idx,非必要。不存在或者等于0时,输出当天的图片,-1为已经预备用于明天显示的信息,1则为昨天的图片,idx最多获取到之前16天的图片信息;*

3、n,必要。这是输出信息的数量,比如n=1,即为1条,以此类推,至多输出8条;*

*号注释:此处我们要注意的时,是否正常的输出信息,与n和idx有关,通过idx的值,我们就可以获得之前bing所使用的背景图片的信息了。

提供一个我正在用json转php,调用图片地址的方法:

PHP
    $str = file_get_contents('http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1');     $array = json_decode($str);     $imgurl = $array->{"images"}[0]->{"url"};     $imgurl = 'http://cn.bing.com'.$imgurl;

如果是JS的ajax抓取,请注意,需要浏览器跨域,或者在nodejs上玩;

当然,也可以在利用PHP这类的程序在后台抓,然后JS再从后台获取可以避开跨域问题。

【话题外】用NodeJS写的一个下载工具: Github

 

[效率较低的方法,但方法依然有效]

今天在弄我的小博客,突发异想,想要去把bing中文网每日更新的背景图片抓取过来。

之前一直以为通过在线抓取bing得网页以后,再做正则的匹配,不过,今天在网上才注意到,原来在CSDN论坛已有有人发了一个更为简便的方式。当然,还是通过php的方式获取,但是匹配的xml页面,相对更加快捷的获取背景图片。

php代码如下:【来源:CSDN论坛

PHP
    $str=file_get_contents('http://cn.bing.com/HPImageArchive.aspx?idx=0&n=1');     if(preg_match("/<url>(.+?)<\/url>/ies",$str,$matches)){         $imgurl = 'http://cn.bing.com'.$matches[1];     }

可以直接调用上面的变量$imgurl,也可以将这个封成函数,方便调用。

补充CSS部分,如何让背景图固定不随滚动条滚动。

CSS
background:fixed;

为你背景图所在的选择器内,添加上面这句声明即可。

很可惜,上面的方法,经过我的实验,还是存在一些遗憾。获取到的图片并不完美,可能永远只有1366x768大小的图片,对于现在很多分辨率在1600x900或者1980x1080的时候,上面获取到的大小,明显不合适了。

 

评论