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

PHP 實作自訂搜尋引擎:串接 Google API 與結果解析重構

     編輯:PHP 綜合知識

演進歷程

早期透過 file() 或 file_get_contents() 抓取 Google HTML 頁面並解析 (Screen Scraping),脆弱且違反服務條款。現代應使用 Google Custom Search JSON API 或 Programmable Search Engine 官方介面。

官方 API 方案 (推薦)

啟用步驟

  1. Google Cloud Console 建立專案、啟用 Custom Search API
  2. 建立 API Key、Custom Search Engine ID (cx)
  3. 設定搜尋引擎:要搜尋的網站、圖片搜尋、安全搜尋等

PHP 呼叫範例

 ['timeout' => 10, 'ignore_errors' => true]
]));

if ($json === false) {
    exit('搜尋服務暫時不可用');
}

$data = json_decode($json, true);
if (isset($data['error'])) {
    exit('API 錯誤: ' . $data['error']['message']);
}

foreach ($data['items'] ?? [] as $item) {
    echo "
"; echo "

{$item['title']}

"; echo "

{$item['snippet']}

"; echo "{$item['displayLink']}"; echo "
"; }

舊式 HTML 解析教學 (僅供理解原理,勿用於生產)

原文示範:

  1. file("https://google.com/search?q=...&hl=zh-CN") 取得 HTML 陣列
  2. join('', $result) 合併字串
  3. strstr() 定位第一個 <table> (結果區塊起始)
  4. strpos() 找倒數第二個 </table> (結束)
  5. substr() 截取結果區塊
  6. 正則提取標題、連結、摘要

缺點:Google HTML 結構常變、被封 IP、無法律授權、無法處理 JS 渲染內容。

進階功能擴充

  • 分頁:&start=11 (每頁 10 筆)
  • 搜尋建議:https://suggestqueries.google.com/complete/search?client=firefox&q=...
  • 圖片搜尋:searchType=image
  • 結果快取:Redis 儲存 API 回應,降低配額消耗
  • 多引擎聚合:同時查詢 Bing、DuckDuckGo、自建 Elasticsearch

成本控制

  • Custom Search API:每日 100 次免費,超過 $5/1000 次
  • 大流量站建議自建搜尋叢集 (Elasticsearch/OpenSearch/MeiliSearch/Typesense)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved