首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

PHP 爬蟲解決非同步載入內容:以 tvmao.com 為例

     編輯:程式設計疑難解答

問題:傳統爬蟲抓不到 JS 動態渲染的資料

目標網站 https://www.tvmao.com/program/CCTV-CCTV6-w3.html 的節目表(時間、標題)由 JavaScript 非同步請求嵌入,直接用 file_get_contents 或 cURL 只能拿到初始 HTML,看不到真實資料。

解決思路:從「模擬瀏覽器」到「直接呼叫 API」

方案一:無頭瀏覽器

  • 工具:Puppeteer (Node.js)、Playwright、Selenium + ChromeDriver。
  • 原理:真實執行 JS,等待網路請求完成後再抓取 DOM。
  • 優點:通用性強,應對複雜 SPA 應用。
  • 缺點:資源消耗大、速度慢、部署較繁瑣。

方案二:分析網路請求,直接呼叫後端 API(推薦)

  1. 開啟瀏覽器開發者工具 F12 → Network 面板。
  2. 篩選 XHR / Fetch,重新整理頁面。
  3. 找到回傳節目表 JSON 的請求 URL、參數、Header。
  4. 在 PHP 中用 cURL 模擬該請求(帶上必要的 Referer、User-Agent、Cookie 等)。
  5. 解析 JSON 直接取得結構化資料,無需解析 HTML。

方案三:使用現成的「無頭瀏覽器服務」

實戰建議

優先嘗試方案二,效能最好且穩定。若網站加密簽名、混淆參數難以逆向,再退而求其次用方案一或三。參考大神經驗:PHP 爬蟲處理非同步載入的完整案例。

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