PHP爬取某随机图片API图片
连夜写的,费很大劲因为确实学艺不精解决细节问题花费很多时间。
(复制转载请遵守知识共享署名 4.0 国际许可协议)
宝塔设置定时访问URL执行PHP脚本,我设置了1h一次,一次下载一张,顺便写入md5到txt文件里保存备用
<?php
$url=('http://xxxapi.com');//定义API地址
$re=file_get_contents($url);//对API地址发起Get请求得到图片文件实际地址数据
$path = ("./imgfile/tmp.jpg"); //设置文件路径和文件名
file_put_contents($path, $re); //根据预设path保存img为tmp.jpg
//print($re); //直接强行输出二进制图片数据,一片乱码
$imgmd5=md5_file($path); //计算爬取到的文件的md5
print($imgmd5);
//尝试把md5()取得的md5直接作为rename()的新文件名称使用,首先判断md5()取得的md5应该是一个字符串但是赋值给imgNewName会报错(其实是因为我还要拼上去后缀,但是拼的时候连接符号错了....)
// echo gettype($imgmd5); 通过gettype()确定md5()返回值的类型是字符串。
$imgNewName= "./imgfile/".$imgmd5.".jpg"; // 开始拼接,!!!不能使用+进行运算(我这个白痴想当然的就以为PHP的字符串连接和易语言一样是+,然而仔细想了想并不是这样,PHP的字符串连接我之前似乎还写过博客,但是我没找到,可能数据丢失那次跟着没了),此处我们进行的是三个字符串之间的连接,应该使用.连接两个字符串。
rename($path,$imgNewName) //修改tmp.jpg为md5
//重命名的时候遇到了问题,原文件路径当然是固定的path,也就是./imgfile/tmp.jpg,但是新文件名这一项写了md5.jpg后重命名的文件出现在了./而不是我希望的./imgfile/里。经过尝试,如果新文件名写的是带路径的会直接把路径名字当文件名一部分加在前面了而且依旧在./里。(其实就是新文件路径拼的时候我少了个/,加上就好了。)
?>