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

PHP 抓取「深圳之窗」新聞實戰:列表頁與內容頁解析範例

     編輯:PHP 相關知識

法律與道德提醒

抓取第三方網站內容前,請確認 robots.txt、服務條款與著作權法,僅供學習研究,勿用於商業或大量複製。

步驟 1:分析目標頁面結構

以「科技新聞」列表頁 https://news.szptt.net.cn/kjxw.phtml 為例,觀察 HTML 原始碼,找出穩定特徵:

  • 新聞列表包裹在 <ul>...</ul>。
  • 每則新聞為 <li>...</li>。
  • 連結指向詳細頁,URL 含日期與編號。

步驟 2:抓取列表頁 (readNews.php)

 後的內容
    $parts = explode('
    ', $html); $items = explode('', $parts[1]); for ($i = 0; $i < 15; $i++) { echo $items[$i]; // 直接輸出含連結的 li 內容 } } ?>

步驟 3:解析詳細頁 (readNewsDetail.php)

 標籤
$parts = explode('echo "
";', $html); // 此處原文有誤,應為實際標籤 for ($i = 4; $i < 6; $i++) { echo $parts[$i]; } ?>

關鍵技巧總結

  1. 先看原始碼:瀏覽器「檢視原始碼」尋找唯一且穩定的標記 (如特定 class、id、註解)。
  2. 善用 explode/split:以固定字串切割,比正則更簡單快速。
  3. 容錯處理:file() 失敗時回傳 false,需檢查;編碼轉換 (iconv/mb_convert_encoding) 避免亂碼。
  4. 快取機制:抓取結果寫入本地快取檔,設定 TTL 減少對源站請求。
  5. User-Agent 偽裝:部分站點封鎖預設 PHP User-Agent,可用 ini_set('user_agent', 'Mozilla/...')。

現代化替代方案

  • DOMDocument::loadHTMLFile() + DOMXPath 結構化解析。
  • Guzzle + Symfony DomCrawler / Goutte 等成熟爬蟲套件。
  • 遵守 robots.txt、限制請求頻率、錯誤重試機制。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved