PHP源码:Bing每日一图采集小程序

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<!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的图片呀。

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