这几天真的是躺中枪,经历了学校断电断网等一系列操作,又要面临新浪图床的折磨⌇●﹏●⌇。做为一位新浪图床的忠诚使用者,本站的一系列图片都存在的上面,现在那边不给调用了,郁闷Σ(っ °Д °;)っ。特地做了下面这个小程序,想要做一个自己的图库。
说明:
1.网络好的情况下5分钟可以爬取下载千余张图片到本地
2.一键获取下载完成的文件名
有服务器的可以爬完自己做图片API的
图片API源码下载地址:https://www.lanzous.com/i3wybkf
说明:
1.网络好的情况下5分钟可以爬取下载千余张图片到本地
2.一键获取下载完成的文件名
有服务器的可以爬完自己做图片API的
图片API源码下载地址:https://www.lanzous.com/i3wybkf
代码1 下载器 dow.php
<?php
set_time_limit(36000);//临时改变程序最长执行时间
function download($url,$_name){
$state = @file_get_contents($url,0,null,0,1);//获取网络资源的字符内容
if($state){
$ext = pathinfo($url,PATHINFO_EXTENSION);
$dir = './img/';//图片储存地址
$allow_type = array('jpg','jpeg','gif','png'); //图片类型
if(in_array($ext, $allow_type)){//判断不是图片接口
$filename = $dir.$_name.'.'.$ext;//一般图片文件名称生成
}else{
$filename = $dir.$_name.'.png';//API图片文件名称生成
}
if(!file_exists($dir)){
return false;
}else{
ob_start();//打开输出
readfile($url);//输出图片文件
$img = ob_get_contents();//得到浏览器输出
ob_end_clean();//清除输出并关闭
$size = strlen($img);//得到图片大小
$fp2 = @fopen($filename, "a");
fwrite($fp2, $img.'png');//向当前目录写入图片文件,并重新命名
fclose($fp2);
return $filename;//输出图片储存地址
}
}else{
return false;
}
}
function str_re($str){//处理特殊字符
$str = str_replace(' ', "", $str);
$str = str_replace("\n", "", $str);
$str = str_replace("\t", "", $str);
$str = str_replace("\r", "", $str);
return $str;
}
$str = explode("\n", file_get_contents('./dm/nanjie.txt'));//获取数据源
$k=count($str);//统计条数
$j = $k/90;//获取循环次数(一组90条测试时相对比较稳定)
echo $j."<br>";
for ($i=0; $i <= $j ; $i++) {
$shu = 90*$i;//获取子循环总数
$cis = 90*($i+1);//获取子循环初始数
for ($n=$shu; $n < $cis ; $n++) {
$sina_img = str_re($str[$n]);//获取指定数据
$url = 'http://ws2.sinaimg.cn/large/'.$sina_img.'.jpg';//设置链接
echo download($url,$sina_img).' '.$n.'<br>';//下载数据
}
echo $i.' '.$shu.' '.$n." <br>";//输出当前组
}
代码2 文件名获取 name.php
<?php
//打开当前目录下的目录pic下的子目录common。
$handler = opendir('img');
/*其中$filename = readdir($handler)
每次循环时将读取的文件名赋值给$filename,$filename !== false。
一定要用!==,因为如果某个文件名如果叫'0′,或某些被系统认为是代表false,用!=就会停止循环
*/
while( ($filename=readdir($handler))!==false){
//略过linux目录的名字为'.'和‘..'的文件
if($filename != "." && $filename != ".."){
//输出文件名
echo $filename."<br>";
}
}
closedir($handler);
转载请注明出处,原文地址:https://www.lykep.com/index.php/archives/254/