이 프로그램은 웹 페이지 소스 코드 캡처, 이미지 링크 획득 및 분석, 동일한 이미지 링크 병합 기능을 구현하고 이미지 캡처 기능을 구현합니다. PHP의 강력한 네트워크 콘텐츠 처리 기능을 사용하여 지정된 웹사이트의 모든 이미지를 가져와 현재 디렉터리에 저장합니다.
<?php /*完成网页内容捕获功能*/ function get_img_url($site_name){ $site_fd = fopen($site_name, "r"); $site_content = ""; while (!feof($site_fd)) { $site_content .= fread($site_fd, 1024); } /*利用正则表达式得到图片链接*/ $reg_tag = '/<img.*?\"([^\"]*(jpg|bmp|jpeg|gif)).*?>/'; $ret = preg_match_all($reg_tag, $site_content, $match_result); fclose($site_fd); return $match_result[1]; } /* 对图片链接进行修正 */ function revise_site($site_list, $base_site){ foreach($site_list as $site_item) { if (preg_match('/^http/', $site_item)) { $return_list[] = $site_item; }else{ $return_list[] = $base_site."/".$site_item; } } return $return_list; } /*得到图片名字,并将其保存在指定位置*/ function get_pic_file($pic_url_array, $pos){ $reg_tag = '/.*\/(.*?)$/'; $count = 0; foreach($pic_url_array as $pic_item){ $ret = preg_match_all($reg_tag,$pic_item,$t_pic_name); $pic_name = $pos.$t_pic_name[1][0]; $pic_url = $pic_item; print("Downloading ".$pic_url." "); $img_read_fd = fopen($pic_url,"r"); $img_write_fd = fopen($pic_name,"w"); $img_content = ""; while(!feof($img_read_fd)){ $img_content .= fread($img_read_fd,1024); } fwrite($img_write_fd,$img_content); fclose($img_read_fd); fclose($img_write_fd); print("[OK] "); } return 0; } function main(){ /* 待抓取图片的网页地址 */ $site_name = "http://www.jb51.net/sheying/391528.html"; $img_url = get_img_url($site_name); $img_url_revised = revise_site($img_url, $site_name); $img_url_unique = array_unique($img_url_revised); //unique array get_pic_file($img_url_unique,"./"); } main(); ?>
이 프로그램에서 아직 개선해야 할 점은 사진이 웹 사이트 서버의 다른 디렉터리에 있지만 파일 이름이 동일할 경우 이때는 사진이 다를 수 있지만 최종적으로 저장되면 사진이 다를 수 있다는 것입니다. , 나중에 얻은 사진은 이전에 저장된 사진을 덮어쓰게 됩니다. 해결책 파일 이름이 이미 저장되기 전에 현재 디렉터리에 있는지 검색하는 것입니다. 저장할 사진은 바로 그것입니다.
위 내용은 PHP로 웹사이트 이미지를 캡처하고 저장하는 방법과 실습 중 프로그램의 불완전성을 수정하는 방법을 공유하는 방법입니다. 이 글이 모든 분들의 학습에 도움이 되기를 바랍니다.