中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

PHP網(wǎng)頁(yè)抓圖

2018-07-20    來(lái)源:open-open

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用
 
<?php
header('Content-Type:text/html;charset=utf-8');

/**
 * 一個(gè)用于抓去圖片的類
 */
class download_image {
    public $_save_path = NULL; //圖片保存路勁
    public $_limit_size = NULL; //圖片限制大小
    public static $_img_url_old = array();  //存儲(chǔ)已抓取過(guò)的圖片鏈接地址
    public static $_a_page_url = array();    //存儲(chǔ)抓取過(guò)的頁(yè)面
    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 ( $site_url == '' ) {
            return false;
        }
        if ( ! in_array( $site_url, self::$_a_page_url ) ) {  //判斷當(dāng)前頁(yè)面是否抓取過(guò)
            self::$_a_page_url[] = $site_url;   //將超鏈接存入靜態(tài)數(shù)組中
        } else {
            return;     //若抓取過(guò)則跳出
        }
        $this->download_the_page_image( $site_url );
        $content = @file_get_contents($site_url);
        $a_page_url = "|<a[^>]+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 $key => $val ) {
                /**
                 * 靜態(tài)化超鏈接,防止進(jìn)入死循環(huán)
                 * 出去當(dāng)前頁(yè)面鏈接表示方式('','#','/')
                 */
                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];   //將符合要求的超鏈接寫入靜態(tài)數(shù)組中
                } 
            }
        }
        if ( self::$_a_page_url != NULL ) {
            foreach( self::$_a_page_url as $keys => $vals ) {
                if ( strpos( $vals, 'http://' ) === false ) { //超鏈接不包含http://時(shí),不能直接訪問(wèn)
                    // 當(dāng)圖片鏈接地址為相對(duì)地址是重新拼湊地址
                    $a_domain_url = substr( $site_url, 0, strpos( $site_url, '/',8 ) + 1 );
                    $a_img_url = $a_domain_url.$vals; 
                }
                //遞歸調(diào)用,訪問(wèn)每一個(gè)超鏈接頁(yè)面
                $this->get_all_page_image( $a_img_url );
            }
        }
    }
     
    /**
     * 下載當(dāng)前頁(yè)面下的所有圖片鏈接
     * @param $site_url   <頁(yè)面地址>
     */
    public function download_the_page_image( $site_url ) {
        // 獲取當(dāng)前鏈接地址頁(yè)面的所有內(nèi)容
        $img_pattern = NULL;
        $content = @file_get_contents( $site_url );
        $img_pattern = "|<img[^>]+src=['\\" ]?([^ '\\"?]+)['\\" >]|U";
        //全局匹配所有的<img >中的圖片鏈接
        $img_out = array();
        preg_match_all( $img_pattern, $content, $img_out, PREG_SET_ORDER );
        echo '<h1>'. $site_url . '共找到' . count($img_out) . '張圖片</h1>';
        //print_r($img_out[1]);
        foreach( $img_out as $key => $val ) {
            //echo htmlspecialchars($val[1]).'<br />';
            $this->save_one_image( $site_url, $val[1]);
        }
         
    }
     
    public function save_one_image( $site_url, $img_url ) {
        if ( strpos( $img_url, 'http://' ) === false ) {
            // 當(dāng)圖片鏈接地址為相對(duì)地址是重新拼湊地址
            $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 .'<span style="color:red;margin-left:50px">該圖片已經(jīng)抓取過(guò)!</span><br/>';
            return;
        }
        //獲取圖片內(nèi)容,并寫入一個(gè)字符串
        $img_data = @file_get_contents( $img_url );
        if ( strlen($img_data) < $this->_limit_size ) { //圖片大小在限制范圍內(nèi)
            $img_boo = @file_put_contents( $this->_save_path.md5(microtime()).$pic_name, $img_data );
            if ( $img_boo ) {
                echo $img_url .'<span style="color:green;margin-left:50px;">圖片保存成功!</span><br/>';
                self::$_img_url_old[] = $img_url;
            } else {
                echo $img_url .'<span style="color:red;margin-left:50px;">圖片保存失敗!</span><br />';
            }
        } else {
            echo $img_url .'<span style="color:red;margin-left:50px;">圖片大小在限制范圍之外!</span><br />';
        }
    }
}
set_time_limit(0);
$download_images = new download_image('surces_Img/',1024*1024*100);
$download_images->get_all_page_image('http://www.baidu.com/');
?>
 

標(biāo)簽:

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:PHP取得上周一、上周日,下周一

下一篇:PHP獲取2個(gè)日期之間的天數(shù)