Bing 每日图片获取

大家都知道微软的Bing搜索引擎首页每天都会提供了一些有趣的图片,而这些图片很多都是有故事含义的,很多网友每天去访问bing首页都是为了这些图片而去的。那么怎么下载下来呢,下面就介绍几种方法。

方法一

打开了 https://bing.com 抓到他的 API。

地址是:

http://www.bing.com/HpImageArchive.aspx?format=xml&idx=0&n=1&mkt=zh-CN

我们很容易的能得到,mkt 是 语言,idx 是 n天前, n 是图片的个数,format 是返回格式。 目前摸到 2 种格式 XML 和 JS (JSON) 。images 就是图片的集合了,在这里取出我们需要的就好, 会用到3个url, hs 的 desc 和 query。

代码

<?php
  define('CACHEPATH', dirname(_file) . '/');
  header('Access-Control-Allow-Origin: *');
  function CacheTodayBing ()
  {
    $data  = json_decode(requestdata('http://cn.bing.com/HpImageArchive.aspx?format=js&idx=0&n=1'), true);
    $title = isset($data['images'][0]['hs'][3]['query']) ? htmlspecialchars($data['images'][0]['hs'][3]['query']) : '';
    $desc  = isset($data['images'][0]['hs'][3]['desc']) ? htmlspecialchars($data['images'][0]['hs'][3]['desc']) : '';
    $url   = isset($data['images'][0]['url']) ? htmlspecialchars($data['images'][0]['url']) : '';
    $path  = CACHE_PATH . 'cached/';
    $date  = date('Ymd');
    $file  = $path . $date . '.jpg';
    if (!is_dir ($path)) {
      mkdir($path, 0755, true);
    }
    if (!file_exists($path . $file))
      requestdata ($url, $file);
    $array = ['title' => $title, 'desc' => $desc, 'url' => 'http://0pa1.cn/bing/cached/' . $date . '.jpg'];
    return $array;
  }

  exit (json_encode(CacheTodayBing()));

  function requestdata ($url, $file = '') {
    if ($file != '')
    $fp = fopen($file, 'wb');
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    if ($fp) {
      curl_setopt($ch, CURLOPT_HEADER, 0);
      curl_setopt($ch, CURLOPT_FILE, $fp);
      curl_exec($ch);
      curl_close($ch);
      return fclose ($fp);
      } else {
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36');
        @$data = curl_exec($ch);
        curl_close($ch);
      }
      return $data;
    }
  ?>

调用

这个方面就没什么好说的了. 如果你想直接把这个当成 img 也行, 变成跳转或者 wget 都行,推荐跳转。 在第8行加入

  header('Loaction: ' . $data['images'][0]['url']);
  exit();

方法二

国际版

URL:

http://www.bing.com/HpImageArchive.aspx?format=xml&idx=0&n=1

继续用这个,但是如果你是国内的主机不加 Cookie 会直接跳转到中国版。 然后用其实加个 Cookie 就好。

Cookie:

 SRCHD=AF=NOFORM; SRCHUSR=AUTOREDIR=0&GEOVAR=&DOB=20141214; _EDGE_S=F=1&SID=0812E6E6F0BE63402FF1E1F6F11F62BB; _EDGE_V=1; MUID=13771579CCDD6B7E08BC1269CD7C6A34; _HOP=; SRCHHPGUSR=CW=1292&CH=279; _FS=NU=1&mkt=en-us&ui=en-us; WLS=TS=63554116155; SRCHUID=V=2&GUID=DBAB6AFA773F41C496D947DA35AC0BFF; MUIDB=13771579CCDD6B7E08BC1269CD7C6A34; SCRHDN=ASD=0&DURL=#; FBS=WTS=1418519360908; _RwBf=s=70&o=16; _SS=SID=CD722604FB7F4C51929B569EA52E187D&bIm=457904&R=0

手机版

API
URL:

http://cn.bing.com/cnhp/coverstory/

imageUrl 图片地址(相对地址)primaryImageUrl 同上(完整地址)。

方法三

1366*768分辨率:

代码: 复制保存为.php文件
一:

<?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];
    }
    if($imgurl){
        header('Content-Type: image/JPEG');
        @ob_end_clean();
        @readfile($imgurl);
        @flush(); @ob_flush();
        exit();
    }else{
        exit('error');
    }
?>

二:

<?php
//header("Access-Control-Allow-Origin: *");
$url = file_get_contents("http://cn.bing.com/cnhp/coverstory");
$array = json_decode($url,true);
$echo = array('title'=>$array['attribute'],'desc'=>$array['para1'],'url'=>str_replace('http://scp-social.s-msn.com/s/images/binghp/zh-cn/', 'http://s.cn.bing.net/az/hprichbg/rb/', $array['primaryImageUrl']));
echo json_encode($echo);

福利放送!!!

放出 Min Mini Theme 背景API源码~ 此代码经过我综合了各种代码最后搞出来的,幸好能用。。。

1920*1080分辨率:

在functions.php添加如下代码:

function bingimage(){
   $str = curl_init();
   curl_setopt($str, CURLOPT_URL, 'http://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1');
   curl_setopt($str, CURLOPT_RETURNTRANSFER, 1);
   $re = curl_exec($str);
   $re = json_decode($re,1);

  return ''.$re['images'][0]['url'].'';
}

调用

<?php echo bingimage(); ?>

结束语

写这篇文章记录下来。文中代码出处:

Bing 每日图片获取(一、二)
放出Doby Kunr Theme背景API源码
网上摘抄

雁过留痕,评论一下吧~ 我会很开心的哦!

添加新评论

已有 12 条评论

  1. 云武 云武

    故事内容怎么抓取?

  2. 不错不错

  3. 嗯 还不错,bing的图片老好了

  4. 好东西耶!!

  5. [哈哈]哇哦,收藏辣!

  6. 不错 我准备也用上

  7. 好东西 :)

  8. 老大,那个调用的放在哪里呢

  9. 右侧的动画怎么设置的?

  10. 十分感谢哈,我博客也用上了[嘻嘻]

  11. S S

    不错。

返回顶部