ホームページ  >  記事  >  バックエンド開発  >  Web サイトの画像をキャプチャする PHP プログラム

Web サイトの画像をキャプチャする PHP プログラム

WBOY
WBOYオリジナル
2016-06-20 13:03:40973ブラウズ

このプログラムは、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 つは現在のディレクトリにこのファイルが存在するかどうかを検索します。保存する前に名前を変更するだけです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。