精品国产免费观看久久久_久久天天躁狠狠躁夜夜爽_无码人妻少妇久久中文字幕_狠狠做深爱婷婷久久综合一区

互聯(lián)網(wǎng)知識

精準(zhǔn)傳達 ? 價值共享

洞悉互聯(lián)網(wǎng)前沿資訊,探尋網(wǎng)站營銷規(guī)律

使用PHP抓取必應(yīng)Bing每日圖像并保存到電腦上

作者:狐靈科技 | 2020-01-13 22:03 |點擊:

打開必應(yīng)搜索的時候 發(fā)現(xiàn)必應(yīng)每天的壁紙 都會更換 并且還非常好看 

于是自己寫了一個獲取biying壁紙的api  但是又擔(dān)心 更換接口 懶得重寫 

于是就想可不可以 把壁紙保存下來 網(wǎng)上搜索的時候找到了 孟坤博客有方法 下面把方法記一下




(今日份的必應(yīng)壁紙)

既然要抓取這張圖片,首先就得弄清這張圖是從何而來的。經(jīng)過對必應(yīng)首頁的抓包,我們可以獲得首頁圖的獲取API。它的格式是這樣的:

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

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

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

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

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

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

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

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

如果你只是單純的想用作網(wǎng)頁背景的話,你只需新建一個php文件,里面貼入如下代碼:

  1. <?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'; // 使用默認(rèn)的圖像(默認(rèn)圖像鏈接可修改為自己的)
    }
     
    header("Location: {$imgurl}");    // 跳轉(zhuǎn)至目標(biāo)圖像
 


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

使用方法:直接將那個php文件的絕對地址當(dāng)做圖片放進網(wǎng)頁中即可。

比如說,如果你的這個php的地址為“http://www.myweb.cn/bing.php”,那么你在你自己的網(wǎng)頁的css中這么寫就能當(dāng)背景使用了:

 
  1. body{
  2.     width:100%;
  3.     height:100%;
  4.     backgroundurl(http://www.myweb.cn/bing.php) no-repeat;
  5.     -moz-background-size: cover;    /*背景圖片拉伸以鋪滿全屏*/
  6.     -ms-background-size: cover;
  7.     -webkit-background-size: cover;
  8.     background-size: cover;
  9. }

以上方法只是簡單地跳轉(zhuǎn),如果想要抓取這張圖片并保存到服務(wù)器呢?這里直接貼代碼:

 
  1. <?php
  2. /**
  3.  * php抓取bing每日圖片并保存到服務(wù)器
  4.  * 作者:mengkun (mkblog.cn)
  5.  * 日期:2016/12/23
  6.  */
  7.  
  8. $path = 'temp';   //設(shè)置圖片緩存文件夾
  9.  
  10. $filename = date("Ymd") . '.jpg';  //用年月日來命名新的文件名
  11.  
  12. if (!file_exists($path.'/'. $filename))    //如果文件不存在,則說明今天還沒有進行緩存
  13. {
  14.     if(!file_exists($path)) //如果目錄不存在
  15.     {
  16.         mkdir($path, 0777); //創(chuàng)建緩存目錄
  17.     }
  18.  
  19.     $str = file_get_contents('http://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1'); //讀取必應(yīng)api,獲得相應(yīng)數(shù)據(jù)
  20.     $str = json_decode($str,true);
  21.  
  22.     $imgurl = 'http://cn.bing.com'.$str['images'][0]['url'];    //獲取圖片url
  23.  
  24.     $img = grabImage($imgurl$path.'/'.$filename); //讀取并保存圖片
  25.  
  26.     $handle = fopen("dat.txt""a");    //用于存放圖片信息,如果不需要保存圖片的相關(guān)信息,可以把下面這些去掉。
  27.     if ($handle)
  28.     {
  29.         $copyright = $str['images'][0]['copyright'];    //說明
  30.         $startdate = $str['images'][0]['startdate'];
  31.         $fullstartdate = $str['images'][0]['fullstartdate'];
  32.         $enddate = $str['images'][0]['enddate'];
  33.         $urlbase = $str['images'][0]['urlbase'];
  34.         $copyrightlink = $str['images'][0]['copyrightlink'];
  35.         $quiz = $str['images'][0]['quiz'];
  36.         $wp = $str['images'][0]['wp'];
  37.         $hsh = $str['images'][0]['hsh'];
  38.         $drk = $str['images'][0]['drk'];
  39.         $top = $str['images'][0]['top'];
  40.         $bot = $str['images'][0]['bot'];
  41.  
  42.         $tempArr = array("imgurl"=>$imgurl,"copyright"=>$copyright"startdate"=>$startdate,
  43.         "fullstartdate"=>$fullstartdate"enddate"=> $enddate"urlbase"=>$urlbase,
  44.         "copyrightlink"=> $copyrightlink"quiz"=>$quiz"wp"=> $wp,
  45.         "hsh"=>$hsh,"drk"=>$drk"top"=> $top"bot"=> $bot);   //將相關(guān)信息放進數(shù)組中
  46.  
  47.         fwrite($handle, json_encode($tempArr) ."\r\n"); //最終以json格式保存在文本文檔中
  48.         fclose($handle);
  49.     }
  50.  
  51.  
  52. }
  53.  
  54. /**
  55.  * 遠程抓取圖片并保存
  56.  * @param $url 圖片url
  57.  * @param $filename 保存名稱和路徑
  58.  */
  59. function grabImage($url$filename = "")
  60. {
  61.     if($url == ""return false; //如果$url地址為空,直接退出
  62.  
  63.     if ($filename == ""//如果沒有指定新的文件名
  64.     {
  65.         $ext = strrchr($url".");  //得到$url的圖片格式
  66.         $filename = date("Ymd") . $ext;  //用天月面時分秒來命名新的文件名
  67.     }
  68.     ob_start();         //打開輸出
  69.     readfile($url);     //輸出圖片文件
  70.     $img = ob_get_contents();   //得到瀏覽器輸出
  71.     ob_end_clean();             //清除輸出并關(guān)閉
  72.     $size = strlen($img);       //得到圖片大小
  73.     $fp2 = @fopen($filename"a");
  74.     fwrite($fp2$img);         //向當(dāng)前目錄寫入圖片文件,并重新命名
  75.     fclose($fp2);
  76.     return $filename;           //返回新的文件名
  77. }

這樣,如果這個php被訪問,它就會自動啟動抓取并保存。你可以用阿里云監(jiān)控或其他類型的網(wǎng)站監(jiān)控服務(wù)來實現(xiàn)每天自動運行這個php。


如沒特殊注明,文章均為狐靈科技原創(chuàng),轉(zhuǎn)載請注明?? "使用PHP抓取必應(yīng)Bing每日圖像并保存到電腦上
多一份免費策劃方案,總有益處。

請直接添加技術(shù)總監(jiān)微信聯(lián)系咨詢

網(wǎng)站設(shè)計 品牌營銷

多一份參考,總有益處

聯(lián)系狐靈科技,免費獲得專屬《策劃方案》及報價

咨詢相關(guān)問題或預(yù)約面談,可以通過以下方式與我們聯(lián)系

業(yè)務(wù)熱線:15082661954 / 大客戶專線:15523356218