-
- function make_dir($path){
- if(!file_exists($path)){//存在しない場合は作成します
- $mk=@mkdir($path,0777) / /Permissions
- @chmod($path,0777);
- }
- return true
- }
関数 read_filetext() は画像のコンテンツを取得します。
fopen を使用してイメージ ファイルを開き、次に fread を使用してイメージ ファイルの内容を読み取ります。
function read_filetext($filepath){ $filepath=trim($filepath); - $htmlfp=@fopen($filepath,"r");
- //remote
- if( strstr($filepath,"://")){
- while($data=@fread($htmlfp,500000)){
- $string.=$data
- }
- }
- //local
- else{
- $ string=@fread($htmlfp,@filesize($filepath));
- }
- @fclose($htmlfp);
- }
- 関数 write_filetext() はファイルを書き込み、画像 fputs のコンテンツがファイルに書き込まれます。つまり、画像ファイルが保存されます。
function write_filetext($filepath,$string){ //$string=stripSlashes($string) $fp=@fopen($filepath,"w"); fputs($fp,$string); @fclose($fp); } - コードをコピー
- 関数 get_filename() は画像名を取得し、保存するファイル名をカスタマイズすることもできます。
- function get_filename($filepath){
$fr=explode("/",$filepath); return $fr[$ count]; } コードをコピー 次に、いくつかの関数を組み合わせて関数 save_pic() で呼び出し、最後に保存された画像のパスを返します。
- 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); - // 保存ディレクトリ
- make_dir($savepath); // 保存ディレクトリを作成
- $filepath = $savepath.$filename
- // ファイルを書き込みます
- write_filetext; ( $filepath,$string);
- return $filepath;
- }
- コードをコピーします
- 最後のステップは、save_pic() 関数を呼び出して画像を保存し、次のコードをテストに使用することです。
- //対象画像アドレス
- $pic = "http://img0.pconline.com.cn/pconline/1205/06/2776119_end1_thumb.jpg"; $savepath = "images/";
- echo save_pic($pic,$savepath);
コードをコピー 実際のアプリケーションでは、製品情報などのコンテンツが収集される場合があります。ホットリンク対策情報 画像は Web サイト上のサーバーに保存されます。
現時点では、通常のマッチングを使用してページのコンテンツを照合し、ページ内で一致するすべての写真を見つけて、それらを Web サイトのサーバーにそれぞれダウンロードして、写真のコレクションを完成させることができます。
テスト例:
- function get_pic($cont,$path){
- $pattern_src = '/<[img|IMG].*?src=['|"](.*?(? :[.gif|.jpg]))['|"].*?[/]?>/';
- $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].!"; } }
コードをコピーします
- 次に、ページのコンテンツを分析してメインコンテンツを見つけ、get_pic() を呼び出して画像を保存します。
-
-
-
-
-
- //Pacific Computer Network 上の携帯電話に関するレポートのコンテンツ ページの写真を収集します
- $url = "http://gz.pconline.com.cn/321/3215791。 html";
-
- $content = file_get_contents($url);//Web コンテンツを取得
- $preg = '#
(.*) div>#iUs';
preg_match_all($preg, $content, $arr); get_pic($cont,'img/'); コードをコピー
上記のコードは作成者によって個人的にテストされており、画像を収集できますが、たとえば、ターゲット Web サイトが 302 回以上のジャンプを行った場合、ターゲット Web サイトがジャンプした場合など、まだ考慮されていないシナリオがいくつかあります。さまざまな収集防止方法を自分で研究してください。
|