使用PHP抓取必应每日图像

在网站开发中,经常需要展示动态内容,比如每日更新的背景图像。必应(Bing)搜索引擎每天都会提供一张精美的壁纸,我们可以通过PHP轻松获取并展示这些图像。本文将介绍一个简单的PHP脚本,用于抓取并输出必应的每日图像。

示例:https://api.bleaz.top/bingimages/ (注:这只是一个示例,请不要滥用哈!我保留禁止一切调用的权力!)

脚本功能概述

这个PHP脚本主要实现以下功能:

  1. 从必应API获取当日图片信息
  2. 下载图片并直接输出给浏览器
  3. 设置适当的HTTP头以优化性能
  4. 提供错误处理机制,当主源不可用时显示备用图片

代码解析

<?php
// 设置内容类型为图片
header('Content-Type: image/jpeg');

// 设置缓存控制头(缓存1天)
header('Cache-Control: public, max-age=86400');

首先,脚本设置HTTP响应头,告诉浏览器这是一个JPEG图片,并且可以缓存1天(86400秒)。这能显著减少服务器负载,因为同一用户一天内多次访问时只需下载一次图片。

// 尝试从Bing获取图片
try {
    // 设置超时时间(秒)
    $context = stream_context_create(['http' => ['timeout' => 5]]);
    $str = @file_get_contents('https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1', false, $context);

使用try-catch块来处理可能的错误。设置5秒超时,防止请求长时间挂起。通过必应提供的API接口获取图片信息,idx=0表示获取当天的图片。

    if ($str === false) {
        throw new Exception('无法从Bing获取数据');
    }

    $data = json_decode($str, true);

    if (json_last_error() !== JSON_ERROR_NONE || !isset($data['images'][0]['url'])) {
        throw new Exception('无效的Bing API响应');
    }

检查API响应是否有效,包括网络请求是否成功和返回的JSON数据是否包含预期的图片URL。

    $imgurl = 'https://cn.bing.com' . $data['images'][0]['url'];
    $image = @file_get_contents($imgurl, false, $context);

    if ($image === false) {
        throw new Exception('无法获取Bing图片');
    }

    // 输出图片
    echo $image;

构造完整的图片URL并下载图片内容,然后直接输出给浏览器。

} catch (Exception $e) {
    // 出错时使用默认图片
    $defaultImage = file_get_contents('https://api.bleaz.top/bingimages/error.webp');
    echo $defaultImage;
}
?>

如果任何步骤出错,脚本会捕获异常并显示一个备用图片,确保始终能看到图像而不是错误信息。


作者:Bleaz
链 接: https://blog.bleaz.net/archives/528
来源:Bleaz's Blog
版权声明:本博客所有文章除特别声明外,均采用「CC BY 4.0」知识共享许可协议进行许可。


评论

  1. samsungi9308
    Linux Edge 137.0.3296.53
    2 周前
    2025-6-19 23:01:45

    初一的bleaz比我强太多了😭😭

    • 博主
      samsungi9308
      Windows Edge 130.0.0.0
      1 周前
      2025-6-21 17:00:42

      没有,没有

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇