-
header('Content-Type:text/html;charset=utf-8');
-
- /**
- * 一個用來抓去圖片的類別
- * @author tangpan
- * /
- class download_image {
- public $_save_path = NULL; //圖片儲存路勁
- public $_limit_size = NULL; //圖片限制大小
- public static $_img_url_old = array() //儲存已抓取過的圖片連結位址
- public static $_a_page_url = array(); //儲存抓取過的頁面
- public function __construct( $_save_path, $_limit_size) {
- $this-> _save_path = $_save_path;
- $this->_limit_size = $_limit_size;
- }
-
- public function get_all_page_image( $site_url ) {
- if > return false;
- }
- if ( ! in_array( $site_url, self::$_a_page_url ) ) { //判斷目前頁面是否抓取過
- self::$_a_page_url[] = $site_url; //將超連結存入靜態陣列
- } else {
- return; //若抓取過則跳出
- }
- $this->download_the_page_image( $site_url );
- $ content = @file_get_contents($site_url);
- $a_page_url = "|] href=['" ]?([^ '"?] )['" >]|U";
- $all_url = array();
- preg_match_all( $a_page_url, $content, $all_url, PREG_SET_ORDER );
- if ( $all_url != NULL ) {
- foreach( $all_url as $all_url ) {
- /**
- * 靜態化超鏈接,防止進入死循環
- * 出去當前頁面鏈接表示方式('','#','/')
- */
- if ( trim($val[1]) != '' && ! in_array( $val[1], self::$_a_page_url ) && ! in_array( $val[1], array('#','/',$site_url) ) ) {
- self::$_a_page_url[] = $val[1]; //將符合要求的超連結寫入靜態陣列中
- }
- }
- }
- if ( self::$_a_page_url != NULL ) {
- foreach( self::$_a_page_url as $keys => $vals ) {
- if ( strpos( $vals, 'http://' ) === false ) { //超連結不包含http://時,不能直接存取
- // 當圖片連結位址為相對位址是重新拼湊位址
- $a_domain_url = substr( $site_url, 0, strpos( $site_url, '/',8 ) 1 );
- $a_img_url = $a_domain_url.$vals;
- $a_img_url = $a_domain_url.$vals;
- }
- //遞歸調用,訪問每一個超連結頁面
- $this->get_all_page_image( $a_img_url );
- }
- }
- }
-
- /**
- * 下載目前頁面下的所有圖片連結
- * @param $site_url
- //
- public function download_the_page_image( $site_url ) {
- // 所有取得目前連結位址頁的內容
- $img_pattern = NULL;
- $content = @file_get_contents( $site_url );
- $content = @file_get_contents( $site_url );"] src=['" ]?([^ '"?] )['" >]|U";
- //全域符合所有的中的圖片連結
- $img_out = array();
- preg_match_all( $img_pattern, $content, $img_out, PREG_SET_ORDER );
- echo '
'. $site_url . '共找到' . count($img_out) . '張圖片';
- //print_r($img_out[1]);
- foreach( $img_out as $key => $val ) {
- //echo htmlspecialchars($val[1] ).'
';
- $this->save_one_image( $site_url, $val[1]);
- }
-
- }
-
- public function save_one_image( site_url, $img_url ) {
- if ( strpos( $img_url, 'http://' ) === false ) {
- // 當圖片連結位址為相對位址是重新拼湊位址
- $domain_url = substr( $site_url, 0, strpos( $site_url, '/',8 ) 1 );
- $img_url = $domain_url.$img_url;
- }
- $pic_name = basename( $img_url ); //取得圖片名稱
-
- if ( in_array( $img_url, self::$_img_url_old ) ) {
- echo $img_url .'">圖片已經抓取過!
';
- return;
- }
- //取得圖片內容,並寫入一個字串
- $img_data = @file_get_contents( $img_url );
- if ( strlen($img_data) _limit_size ) { //圖片大小在限制範圍內
- $img_boo = @file_put_contents( $this->_save_path.md5(microtime()).$pic_name, $img_data );
- if ( $img_boo ) {
- echo $img_url .' 圖片儲存成功!
';
- self::$_img_url_old[] = $img_url;
- } else {
- echo $img_url .'圖片保存失敗!
';
- }
- } else {
- echo $img_url .'圖片大小在限制範圍之外!
';
- }
- }
- }
- set_time_limit(0);
- $download_images = new download_image('surces_Img/',1024*1024*100) ;
- $download_images->get_all_page_image('http://www.22mm.cc/');
- ?>
複製代碼
|
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31