芜湖尾敢投资有限公司

自己搭建必應壁紙api服務——墨澀網(wǎng)

必應(Bing)集成了多個獨特功能,包括每日首頁美圖,通過將來自世界各地的高質量圖片設置為首頁背景,美輪美奐的必應美圖備很多人當做壁紙使用,今天我們自己搭建api服務自動獲取每天的必應壁紙美圖,搭建好的api服務可以用來作為網(wǎng)頁背景或者其他服務調(diào)用,非常方便!

本站必應壁紙api服務

https://api.sunweihu.com/bing/bing.php

原理分析

經(jīng)過對必應首頁的抓包,我們可以獲得首頁圖的獲取API。它的格式是這樣的:

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

這里有幾個GET參數(shù),它們的作用分別是:

  • n,必要參數(shù)。這是輸出信息的數(shù)量。比如n=1,即為1條,以此類推,至多輸出8條。
  • format,非必要。返回結果的格式,不存在或者等于xml時,輸出為xml格式,等于js時,輸出json格式
  • idx,非必要。不存在或者等于0時,輸出當天的圖片,-1為已經(jīng)預備用于明天顯示的信息,1則為昨天的圖片,以此類推,idx最多獲取到前16天的圖片信息

這里將n設定為1、format設定為js、idx設定為1,去發(fā)出GET請求,返回的數(shù)據(jù)是這樣的:

{
    "images": [
        {
            "startdate": "20161222",
            "fullstartdate": "201612221600",
            "enddate": "20161223",
            "url": "/az/hprichbg/rb/TheDomeEdinburgh_ZH-CN11993142817_1920x1080.jpg",
            "urlbase": "/az/hprichbg/rb/TheDomeEdinburgh_ZH-CN11993142817",
            "copyright": "愛丁堡一家叫做The Dome的夜店,蘇格蘭 (? Marty McKillop/500px)",
            "copyrightlink": "http://www.bing.com/search?q=The+Dome,+Edinburgh&form=hpcapt&mkt=zh-cn",
            "quiz": "/search?q=Bing+homepage+quiz&filters=WQOskey:%22HPQuiz_20161222_TheDomeEdinburgh%22&FORM=HPQUIZ",
            "wp": false,
            "hsh": "376393c9b49c6d8d1a6e7c2d38343105",
            "drk": 1,
            "top": 1,
            "bot": 1,
            "hs": []
        }
    ],
    "tooltips": {
        "loading": "正在加載...",
        "previous": "上一個圖像",
        "next": "下一個圖像",
        "walle": "此圖片不能下載用作壁紙。",
        "walls": "下載今日美圖。僅限用作桌面壁紙。"
    }
}

其中的“images”節(jié)點下的“url”值便是我們要獲取的圖像地址。我們把它取出來,再加上Bing的網(wǎng)址前綴(http://cn.bing.com)即組合成了完整的圖像地址。比如說上面返回數(shù)據(jù)的完整圖像地址是這樣的:

http://cn.bing.com/az/hprichbg/rb/TheDomeEdinburgh_ZH-CN11993142817_1920x1080.jpg

知道了背景圖的獲取方式,接下來就是用PHP去動態(tài)抓取了。

搭建api服務

你只需新建一個php文件,貼入如下代碼:

<?php
$str = file_get_contents('http://cn.bing.com/HPImageArchive.aspx?idx=0&n=1');   // 從bing獲取數(shù)據(jù)
 
if(preg_match('/<url>([^<]+)<\/url>/isU', $str, $matches)) { // 正則匹配抓取圖片url
    $imgurl = 'http://cn.bing.com'.$matches[1];
} else {  // 如果由于某些原因,沒抓取到圖片地址
    $imgurl = 'http://img.infinitynewtab.com/InfinityWallpaper/2_14.jpg'; // 使用默認的圖像(默認圖像鏈接可修改為自己的)
}
 
header("Location: {$imgurl}");    // 跳轉至目標圖像

然后把這個php文件上傳到你的服務器或者是網(wǎng)站空間,訪問這個php應該就能看到被跳轉到了Bing的圖片。

注意:服務中使用的preg_match指令最高支持php7.2版本,高于php7.2的版本會無法使用。

使用方法:

直接將那個php文件的絕對地址當做圖片放進網(wǎng)頁中即可。你也可以直接調(diào)用本站的必應壁紙api服務使用。

地址:https://api.sunweihu.com/bing/bing.php

php文件下載

https://www.lanzous.com/i96nide
THE END