一个简单的爬虫

<?php   
	function GrabImage($url,$ext){
		if(substr($url,0,4) != 'http'){//如果图片的加载地址不是http开头的则返回false
			 return false;
		}
		if($ext != ".jpg" && $ext != ".bmp" && $ext != ".png" && $ext != ".jpeg"){//筛选图片类型
		 echo "格式不支持!";
		 return false;
		}
		$filename = './'.time().$ext;//以当前时间戳命名保存图片
		//开始保存
		ob_start(); 
		readfile($url); 
		$img = ob_get_contents(); 
		ob_end_clean(); 
		$size = strlen($img); 
		$fp = fopen($filename , "a"); 
		fwrite($fp, $img); 
		fclose($fp);
		sleep(1);//延时1秒,防止时间戳一致导致图片命名重复
		return $filename; 
	} 	

        $url = "https://www.baidu.com/";//目标网址
        $html = file_get_contents($url);
        preg_match_all("/\"[^\"]*[^0]\.(?:png|jpg|bmp|jpeg)\"/", $html, $text);//爬图片的正则表达式
        foreach ($text as $key => $value) {
            foreach ($value as $img) {//$img为图片的加载地址,含有双引号;	
                echo "<img src=" . $img . " />";			
				$key++;
				$img = substr($img,1,-1);//将$img中的双引号去掉
				$ext = strrchr($img, '.');//获取图片的类型(.png|.jpg|.bmp|.jpeg)
				GrabImage($img,$ext);//保存图片
				
            }
        }

?>

注意将php.ini文件中的extension=openssl前面的分号去掉;

猜你喜欢

转载自blog.csdn.net/qq_37715335/article/details/81809087