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

PHP 入門級網頁採集程式:圖片抓取與分頁處理實戰

     編輯:PHP 綜合知識

在早期的 PHP 開發學習中,編寫簡單的採集腳本是理解網路請求、正則表達式與檔案操作的絕佳練習。本文整理自 2007 年的一份經典入門教程,展示如何使用 file_get_contents 搭配正則表達式,從目標頁面抓取圖片並處理分頁邏輯,最後將結果整合輸出或存入 EmpireCMS 等系統二次加工。

核心函數解析:getimg()

程式的核心在於 getimg($url, $n, $key, $imgqian, $imgbiao, $titlekey) 函數,參數含義如下:

  • $url:目標頁面 URL
  • $n:圖片計數器(引用傳遞,跨分頁累加)
  • $key:圖片地址正則模板,預留 {圖片地址} 佔位符
  • $imgqian:圖片網址前綴(處理相對路徑)
  • $imgbiao:特徵標識,用於篩選符合條件的圖片標籤
  • $titlekey:頁面標題正則模板,預留 {圖片標題} 佔位符

函數流程:

  1. 抓取頁面原始碼 $msg = file_get_contents($url)
  2. 將佔位符替換為捕獲組 (.+),組合完整正則
  3. preg_match_all 提取所有符合條件的圖片標籤
  4. 遍歷結果,若包含 $imgbiao 則補全前綴;否則直接匹配 https://...jpg
  5. 提取頁面標題並返回

分頁採集邏輯

當 $_POST['getpage'] == '是' 時啟用分頁採集:

  • page:分頁連結正則,含 {分頁地址} 佔位符
  • pagekey:從分頁連結中提取實際 URL 的正則,含 {關鍵地址} 佔位符
  • pc:採集頁數限制(1~5 或全部)

程式會解析首頁分頁連結,逐一訪問並複用 getimg() 累加圖片,實現多頁面聚合採集。

三個實戰表單範例

範例 1:帶分頁的圖集頁面

<form method="POST" action="?act=getimgadd">
  輸入圖片地址 <input name="url" value="https://www.pp132.com/n835c17.shtml"><br>
  圖片地址正則 <input name="key" value="<img{圖片地址}>"><br>
  圖片地址前綴 <input name="imgqian" value="https://www.pp132.com/"><br>
  圖片地址標識 <input name="imgbiao" value="upload"><br>
  圖片標題正則 <input name="titlekey" value="<H1 class=aTitle>{圖片標題}</H1></DIV>"><br>
  分頁地址正則 <input name="page" value="<a href=\"{分頁地址}shtml\">.[0-9]"><br>
  分頁地址模式 <input name="pagekey" value="https://{關鍵地址}shtml"><br>
  <select name="getpage"><option value="是" selected>獲取分頁</option><option value="否">不獲取</option></select><br>
  <select name="pc"><option value="1" selected>1頁</option>...<option value="全部">全部</option></select><br>
  <select name="showtype"><option value="圖片" selected>顯示圖片</option><option value="文字">顯示網址</option></select><br>
  <input type="submit">
</form>

範例 2:無分頁、相對路徑圖片

目標頁 https://zy.muwen.com/pic/89/2007/01/01/131721.htm,圖片標籤為 <IMG src="/UpLoad{圖片地址}jpg",需設定 imgqian=https://zy.muwen.com/、imgbiao=UpLoad,分頁相關留空。

範例 3:無分頁、絕對路徑圖片

目標頁 https://www.6642.com/Disp/9936.htm,圖片已為完整 URL,故 imgqain 留空,imgbiao 仍可設特徵值輔助篩選。

論壇附件/外鏈採集補充正則

針對華聲論壇(dispbbs2.asp)兩種圖片形式提供現成正則:

  • 附件形式:upload=jpg{圖片地址}upload,標識 bbs
  • 外鏈形式:img]{圖片地址}/img,標識 jpg
  • 統一標題正則:帖子主題</B>:{圖片標題}</th>

兼容性備註

若伺服器禁用 file_get_contents,可改用 fopen/fgets 迴圈讀取並 join 組合內容,原始碼中已附註替代寫法。

安全與現代化建議

  • 原始碼直接使用 $_POST 參數拼接 SQL/正則,存在注入風險,實際部署請務必過濾轉義
  • 建議改用 cURL 替代 file_get_contents,支援 Header、Cookie、Timeout 等進階控制
  • 正則解析 HTML 易斷裂,現代專案推薦 DOMDocument 或 Symfony DomCrawler
  • 採集頻率需遵守 robots.txt 與目標站點服務條款,避免法律風險

這份腳本雖屬入門級,但完整展示了「抓取 → 正則提取 → 分頁遞迴 → 結果輸出」的經典採集閉環,適合初學者閱讀理解 PHP 網路操作基礎流程。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved