ホームページ >バックエンド開発 >PHPチュートリアル >リモートイメージを収集するための PHP サンプルコード

リモートイメージを収集するための PHP サンプルコード

WBOY
WBOYオリジナル
2016-07-25 08:55:37882ブラウズ
  1. function make_dir($path){
  2. if(!file_exists($path)){//存在しない場合は作成します
  3. $mk=@mkdir($path,0777) / /Permissions
  4. @chmod($path,0777);
  5. }
  6. return true
  7. }
関数 read_filetext() は画像のコンテンツを取得します。 fopen を使用してイメージ ファイルを開き、次に fread を使用してイメージ ファイルの内容を読み取ります。

function read_filetext($filepath){
    $filepath=trim($filepath);
  1. $htmlfp=@fopen($filepath,"r");
  2. //remote
  3. if( strstr($filepath,"://")){
  4. while($data=@fread($htmlfp,500000)){
  5. $string.=$data
  6. }
  7. }
  8. //local
  9. else{
  10. $ string=@fread($htmlfp,@filesize($filepath));
  11. }
  12. @fclose($htmlfp);
  13. }
  14. 関数 write_filetext() はファイルを書き込み、画像 fputs のコンテンツがファイルに書き込まれます。つまり、画像ファイルが保存されます。
function write_filetext($filepath,$string){ //$string=stripSlashes($string)

$fp=@fopen($filepath,"w"); fputs($fp,$string);

@fclose($fp);
}
  1. コードをコピー
  2. 関数 get_filename() は画像名を取得し、保存するファイル名をカスタマイズすることもできます。
  3. function get_filename($filepath){
$fr=explode("/",$filepath); return $fr[$ count]; }

コードをコピー
    次に、いくつかの関数を組み合わせて関数 save_pic() で呼び出し、最後に保存された画像のパスを返します。
  1. function save_pic($url,$savepath=''){
//処理アドレス
$url=trim($url) $url=str_replace(" ","% 20",$url); //ファイルを読み取ります
$string=read_filetext($url);

if(empty($string)){

echo 'ファイルを読み取れません';exit;
}
//ファイル名
    $filename = get_filename($url);
  1. // 保存ディレクトリ
  2. make_dir($savepath); // 保存ディレクトリを作成
  3. $filepath = $savepath.$filename
  4. // ファイルを書き込みます
  5. write_filetext; ( $filepath,$string);
  6. return $filepath;
  7. }
  8. コードをコピーします
  9. 最後のステップは、save_pic() 関数を呼び出して画像を保存し、次のコードをテストに使用することです。
  10. //対象画像アドレス
  11. $pic = "http://img0.pconline.com.cn/pconline/1205/06/2776119_end1_thumb.jpg"; $savepath = "images/";
  12. echo save_pic($pic,$savepath);
コードをコピー

実際のアプリケーションでは、製品情報などのコンテンツが収集される場合があります。ホットリンク対策情報 画像は Web サイト上のサーバーに保存されます。 現時点では、通常のマッチングを使用してページのコンテンツを照合し、ページ内で一致するすべての写真を見つけて、それらを Web サイトのサーバーにそれぞれダウンロードして、写真のコレクションを完成させることができます。
テスト例:
  1. function get_pic($cont,$path){
  2. $pattern_src = '/<[img|IMG].*?src=['|"](.*?(? :[.gif|.jpg]))['|"].*?[/]?>/';
  3. $num = preg_match_all($pattern_src, $cont, $match_src);
$pic_arr = $match_src[ 1]; //画像の配列を取得します
foreach ($pic_arr as $pic_item) { //各画像のアドレスを取得するためのループ save_pic($pic_item,$path) //画像をダウンロードして保存します echo "[ OK].!";
}

}

コードをコピーします
  1. 次に、ページのコンテンツを分析してメインコンテンツを見つけ、get_pic() を呼び出して画像を保存します。
  2. //Pacific Computer Network 上の携帯電話に関するレポートのコンテンツ ページの写真を収集します
  3. $url = "http://gz.pconline.com.cn/321/3215791。 html";
  4. $content = file_get_contents($url);//Web コンテンツを取得
  5. $preg = '#
    (.*)
    #iUs';
preg_match_all($preg, $content, $arr);
get_pic($cont,'img/'); コードをコピー

上記のコードは作成者によって個人的にテストされており、画像を収集できますが、たとえば、ターゲット Web サイトが 302 回以上のジャンプを行った場合、ターゲット Web サイトがジャンプした場合など、まだ考慮されていないシナリオがいくつかあります。さまざまな収集防止方法を自分で研究してください。



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