首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 抓取網頁圖片完整範例:CURL + 正則 + 儲存

     編輯:PHP 綜合知識

輸入網址,抓取頁面所有 <img> 標籤的 src 屬性,下載圖片儲存至本地。

核心流程

  1. CURL 取得網頁 HTML 內容(偽裝 User-Agent、支援 Cookie)。
  2. 正則匹配 jpg|bmp|png|gif 四種格式的 src。
  3. 解析檔名,以 fopen/fwrite 二進位寫入檔案。
  4. 支援相對路徑補全(第二輪抓取)。

關鍵函式

function CurlGet($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
    curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
    curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
    $values = curl_exec($ch);
    curl_close($ch);
    return $values;
}

function get_pic($pic_url){
    $data = CurlGet($pic_url);
    $patterns = array(
        '/<img.*?src=["\'](.*?\.jpg)["\'].*?>/i',
        '/<img.*?src=["\'](.*?\.bmp)["\'].*?>/i',
        '/<img.*?src=["\'](.*?\.png)["\'].*?>/i',
        '/<img.*?src=["\'](.*?\.gif)["\'].*?>/i'
    );
    foreach($patterns as $p){
        preg_match_all($p, $data, $m);
        foreach($m[1] as $img){
            $filename = basename($img);
            $fp = fopen($filename, 'wb');
            fwrite($fp, CurlGet($img));
            fclose($fp);
            echo "下載:$img <br/>";
        }
    }
    // 第二輪:處理相對路徑
    foreach($patterns as $p){
        preg_match_all($p, $data, $m);
        foreach($m[1] as $img){
            $full = $pic_url . $img;
            $filename = basename($img);
            $fp = fopen($filename, 'wb');
            fwrite($fp, CurlGet($full));
            fclose($fp);
        }
    }
}

前端介面

簡單表單輸入網址,送出執行 get_pic()。

注意

  • 正則解析 HTML 不穩健,建議改用 DOMDocument 或 QueryList 等解析器。
  • 大量圖片需考慮並發限制與錯誤重試。
  • 尊重網站 robots.txt 與版權。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved