ホームページ >バックエンド開発 >PHPチュートリアル >Web サイトの画像をキャプチャする PHP プログラム
このプログラムは、Webページのソースコードのキャプチャ、画像リンクの取得と解析、同一画像リンクの結合機能を実現し、画像取得機能を実現します。
PHP の強力なネットワーク コンテンツ処理機能を使用して、指定された Web サイト上のすべての画像を取得し、現在のディレクトリに保存します。コードは次のとおりです:
<p><?php</p>/*完成网页内容捕获功能*/<br />function get_img_url($site_name){<br /> $site_fd = fopen($site_name, "r");<br /> $site_content = "";<br /> while (!feof($site_fd)) {<br /> $site_content .= fread($site_fd, 1024);<br /> }<br /> /*利用正则表达式得到图片链接*/<br /> $reg_tag = '/<img.*?\"([^\"]*(jpg|bmp|jpeg|gif)).*?>/';<br /> $ret = preg_match_all($reg_tag, $site_content, $match_result);<br /> fclose($site_fd);<br /> return $match_result[1];<br />}<br /><br />/* 对图片链接进行修正 */<br />function revise_site($site_list, $base_site){<br /> foreach($site_list as $site_item) {<br /> if (preg_match('/^http/', $site_item)) {<br /> $return_list[] = $site_item;<br /> }else{<br /> $return_list[] = $base_site."/".$site_item;<br /> }<br /> }<br /> return $return_list;<br />}<br /><br />/*得到图片名字,并将其保存在指定位置*/<br />function get_pic_file($pic_url_array, $pos){<br /> $reg_tag = '/.*\/(.*?)$/';<br /> $count = 0;<br /> foreach($pic_url_array as $pic_item){<br /> $ret = preg_match_all($reg_tag,$pic_item,$t_pic_name);<br /> $pic_name = $pos.$t_pic_name[1][0];<br /> $pic_url = $pic_item;<br /> print("Downloading ".$pic_url." ");<br /> $img_read_fd = fopen($pic_url,"r");<br /> $img_write_fd = fopen($pic_name,"w");<br /> $img_content = "";<br /> while(!feof($img_read_fd)){<br /> $img_content .= fread($img_read_fd,1024);<br /> <br /> }<br /> fwrite($img_write_fd,$img_content);<br /> fclose($img_read_fd);<br /> fclose($img_write_fd);<br /> print("[OK] ");<br /> }<br /> return 0;<br />}<br /><br />function main(){<br />/* 待抓取图片的网页地址 */<br /> $site_name = "http://image.cn.yahoo.com";<br /> $img_url = get_img_url($site_name);<br /> $img_url_revised = revise_site($img_url, $site_name);<br /> $img_url_unique = array_unique($img_url_revised); //unique array<br /> get_pic_file($img_url_unique,"./"); <br />}<br /><br />main();<br /><p>?></p>このプログラムでまだ改善が必要な点は、写真が Web サイト サーバー上の別のディレクトリにあるがファイル名が同じ場合、この時点では写真が異なる可能性がありますが、これらは最終的に保存され、後で取得されます。たとえば、http://example.com/pic/test1.jpg と http://example.com/pic という画像リンクがあります。 http://example.com/ Web サイトにある /new/test1.jpg この場合、ダウンロード時に 2 つの画像のうちの 1 つだけが保存され、もう 1 つは現在のディレクトリにこのファイルが存在するかどうかを検索します。保存する前に名前を変更するだけです。