很早之前就想要写一个关于Bing搜索首页的图片采集程序了,因为必应的首页的图片很好看,每天都会更新一幅新的图片,但是如果每天都要手动查看代码然后找代码什么的就太麻烦了,于是就想到了用PHP写一个采集Bing首页图片的代码,然后每天打开一下网页或者设置为系统自动运行这个程序,然后就可以无忧无虑的坐等获取的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的图片呀。
不过在设置定时任务的时候遇到过好多问题,不过最终我找到了解决办法,过些日子我有时间在发出来设置定时任务的教程。