很早之前就想要写一个关于Bing搜索首页的图片采集程序了,因为必应的首页的图片很好看,每天都会更新一幅新的图片,但是如果每天都要手动查看代码然后找代码什么的就太麻烦了,于是就想到了用PHP写一个采集Bing首页图片的代码,然后每天打开一下网页或者设置为系统自动运行这个程序,然后就可以无忧无虑的坐等获取的Bing每日一图了。
PHP源码:Bing每日一图采集小程序

上图是Bing今天的首页的图片,是不是很好看。下面贴出我的Bing每日一图PHP采集小程序的代码。这些代码虽然不难,但是对我来说很不易了,我花了5个小时才写完的,不过其中还是有不足的地方就是正则表达式我使用了两条,我测试了很多次都找不到一条能够解决的正则表达式,毕竟我是菜鸟,不太懂这些。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width initial-scale=1.0, user-scalable=yes">
<title>Bing每日一图-采集结果</title>
<body>
<?php
$getcontents = file_get_contents('http://cn.bing.com'); 
preg_match("/([.a-zA-Z0-9-_])*\.jpg/",$getcontents,$filename);
if (preg_match("/(\/?([.a-zA-Z0-9-_])*)*jpg/",$getcontents,$imgurl))
{
    $img = file_get_contents('http://'.$imgurl[0]); 
    file_put_contents($filename[0],$img);
    $sendto = "xxx@xxx.xxx";
    $subject = date("Y年m月d日")." Bing每日一图采集结果报告-成功";
    $message = date("Y-m-d H:i:s")." Bing每日一图采集成功!";
    $from = "admin@lihuan.com.cn";
    $headers = "From: $from";
    if(@mail($sendto,$subject,$message,$headers))
    {
        echo date("Y-m-d H:i:s")." 发送成功!";
    }
    else
    {
        echo date("Y-m-d H:i:s")." 发送失败!";
    }
}
else
{
    if (preg_match("/(\/([.a-zA-Z0-9-_])*)*jpg/",$getcontents,$imgurl))
    {
        $img = file_get_contents('http:'.$imgurl[0]);
        file_put_contents($filename[0],$img);
        $sendto = "xxx@xxx.xxx";
        $subject = date("Y年m月d日")." Bing每日一图采集结果报告-成功";
        $message = date("Y-m-d H:i:s")." Bing每日一图采集成功!";
        $from = "admin@lihuan.com.cn";
        $headers = "From: $from";
        if(@mail($sendto,$subject,$message,$headers))
        {
            echo date("Y-m-d H:i:s")." 发送成功!";
        }
        else
        {
            echo date("Y-m-d H:i:s")." 发送失败!";
        }
    }
    else
    {
        $sendto = "xxx@xxx.xxx";
        $subject = date("Y年m月d日")." Bing每日一图采集结果报告-失败";
        $message = date("Y-m-d H:i:s")." Bing每日一图采集失败!\n".$getcontents;
        $from = "admin@lihuan.com.cn";
        $headers = "From: $from";
        if(@mail($sendto,$subject,$message,$headers))
        {
            echo date("Y-m-d H:i:s")." 发送成功!";
        }
        else
        {
            echo date("Y-m-d H:i:s")." 发送失败!";
        }
    }
}
?>
</body>
</html>

虽然是很简单的代码,但是很实用哦,我经过几天的测试,都能够成功的采集到Bing首页的图片,现在终于可以一劳永逸了。哈哈。

还有一点,我现在有主机服务器的控制权,所以我添加了定时任务,所以一般采集就不用打开网页了,而此时,如果你没有设置定时任务的权限的话,那么你还要每天手动打开这代码所在的文件才能够采集到Bing的图片呀。

不过在设置定时任务的时候遇到过好多问题,不过最终我找到了解决办法,过些日子我有时间在发出来设置定时任务的教程。


发表评论

电子邮件地址不会被公开。 必填项已用*标注