📘 Python應用第 9-1 集:❌爬蟲禁入!? ✅Google 搜尋 API 替代方案與操作流程

更新 發佈閱讀 10 分鐘

在寫爬蟲的時候,很多人第一個想法就是:

能不能寫程式自動去抓 Google 搜尋結果?

但其實 Google 搜尋頁面(https://www.google.com)**不開放 API**,也禁止爬蟲直接抓取。這一集我們就來介紹一個「合法、官方、免費」的 Google 搜尋替代方案:Custom Search JSON API


❌ 為什麼不能直接爬 Google 搜尋頁?

  • 搜尋結果是動態 JavaScript 生成的,不是靜態 HTML
  • robots.txt 明確禁止爬蟲訪問 /search
  • 違反使用政策會導致 IP 被封鎖


✅ 替代方案:Google Custom Search JSON API

Google 官方提供的搜尋服務,讓你可以用程式呼叫 API 取得搜尋結果。


🔧 操作步驟詳解:申請金鑰與設定搜尋引擎

步驟 1:建立自訂搜尋引擎(CSE)

  1. 前往:https://programmablesearchengine.google.com/
  2. 點「新增」搜尋引擎
  3. 網站範圍可填 *.edu.twwww.python.org(可選擇搜尋整個網路)
  4. 建立成功後,複製你的搜尋引擎 ID(cx)

步驟 2:申請 API 金鑰

  1. 前往:https://console.cloud.google.com/
  2. 建立專案(若已有可略過)
  3. 啟用 API:「Custom Search JSON API」
  4. 前往「API 和服務 > 認證」新增 API 金鑰
  5. 複製金鑰(key)備用


🧪 程式實作:查詢 "Python 爬蟲"

import requests

api_key = "你的API金鑰"
cx = "你的搜尋引擎ID"
query = "python 爬蟲"

url = "https://www.googleapis.com/customsearch/v1"
params = {
"key": api_key,
"cx": cx,
"q": query
}

r = requests.get(url, params=params)
data = r.json()

for item in data.get("items", []):
print("🔗", item["title"], "→", item["link"])

🔽 輸出範例:

🔗 Python網頁爬蟲實戰 → https://example.com/python-crawler
🔗 BeautifulSoup入門 → https://example.com/tutorial

✅ 延伸任務:

📦 儲存結果為 CSV

import pandas as pd

results = [{"標題": item["title"], "連結": item["link"]} for item in data.get("items", [])]
df = pd.DataFrame(results)
df.to_csv("google_results.csv", index=False, encoding="utf-8")
print("已儲存至 google_results.csv")


🧽 過濾特定來源(例如只保留 medium.com)

filtered = [item for item in results if "medium.com" in item["連結"]]
for f in filtered:
print("📝", f["標題"], "→", f["連結"])


📊 關鍵字頻率分析(統計標題中的熱門詞彙)

from collections import Counter
import re

all_titles = " ".join(item["標題"] for item in results)
words = re.findall(r"\w+", all_titles.lower())
common = Counter(words).most_common(10)
print("🔍 最常見關鍵字:")
for word, count in common:
print(f"{word}{count} 次")

🔽 輸出範例:

🔍 最常見關鍵字:
python:5
爬蟲:4
教學:2
...(其餘略)


🔎 其他搜尋引擎 API 推薦

若你想獲得更多搜尋來源,這些合法 API 也是非常實用的選擇:

🔹 Bing Web Search API(Microsoft)

申請流程簡要:

  1. 前往 https://portal.azure.com/
  2. 建立一個免費帳戶並登入
  3. 點選「建立資源 > AI + Machine Learning > Bing Search v7」
  4. 設定資源名稱與地區後建立服務
  5. 前往「金鑰與端點」頁面,複製 API 金鑰與 endpoint

✅ 使用範例

import requests
import os

subscription_key = "你的Bing API金鑰"
url = "https://api.bing.microsoft.com/v7.0/search"
headers = {"Ocp-Apim-Subscription-Key": subscription_key}
params = {"q": "Python 爬蟲", "count": 5, "mkt": "zh-TW"}

r = requests.get(url, headers=headers, params=params)
data = r.json()

for item in data.get("webPages", {}).get("value", []):
print("🔗", item["name"], "→", item["url"])

🔽 輸出範例:

🔗 用 Python 撰寫網路爬蟲 → https://example.com/article
🔗 如何用 requests + BeautifulSoup → https://example.com/bs4


🔹 DuckDuckGo Instant Answer API

使用方式簡單: 直接使用例如:https://api.duckduckgo.com/?q=python&format=json 可用瀏覽器開即可看到結果,也可搭配 requests 使用。

✅ 使用範例

import requests

url = "https://api.duckduckgo.com/"
params = {"q": "python", "format": "json"}
r = requests.get(url, params=params)
data = r.json()

print("📘 定義:", data.get("AbstractText", "無定義"))

🔽 輸出範例:

📘 定義:Python is an interpreted high-level general-purpose programming language.


🔹 SerpAPI

  • 網址:https://serpapi.com/
  • 可模擬 Google、Bing、Yahoo 搜尋結果
  • 提供整理過的 JSON 結構,非常適合開發者使用
  • 免費帳號有每日次數限制

申請流程簡要:

  1. 前往 https://serpapi.com/signup 註冊帳戶
  2. 登入後至 Dashboard 複製你的 API Key

✅ 使用範例

import requests

params = {
"engine": "google",
"q": "Python 爬蟲",
"api_key": "你的APIKey",
"hl": "zh-tw"
}

r = requests.get("https://serpapi.com/search", params=params)
data = r.json()

for item in data.get("organic_results", []):
print("🔍", item.get("title"), "→", item.get("link"))

🔽 輸出範例:

🔍 Python爬蟲實戰入門 → https://example.com/start
🔍 使用Python打造自己的小爬蟲 → https://example.com/scrapy

🔽 說明:SerpAPI 支援更多進階功能,如自動點擊、分頁、新聞/圖片搜尋等。

這些 API 各有優劣,選擇時可根據你爬取的內容、語言、預算與資料需求來考量 👍

留言
avatar-img
Dolly的奇妙育兒之旅
20會員
132內容數
一串感恩又心累、感謝又荒謬的心路歷程
2025/07/24
4. 動詞 (Verbs) 動詞是句子的核心,表示主詞的動作、行為或狀態。它是構成完整句子的必要元素。動詞的變化非常豐富,包括時態、語態、語氣等,這些都是多益文法常考的重點。 4.1 動詞種類:及物動詞與不及物動詞 動詞根據其後是否需要接受詞,可分為及物動詞和不及物動詞。
Thumbnail
2025/07/24
4. 動詞 (Verbs) 動詞是句子的核心,表示主詞的動作、行為或狀態。它是構成完整句子的必要元素。動詞的變化非常豐富,包括時態、語態、語氣等,這些都是多益文法常考的重點。 4.1 動詞種類:及物動詞與不及物動詞 動詞根據其後是否需要接受詞,可分為及物動詞和不及物動詞。
Thumbnail
2025/07/22
6. 介系詞 (Prepositions) 介系詞是用來表達名詞或代名詞與句中其他詞之間關係的詞,通常表示時間、地點、方向、方式、原因等。介系詞本身沒有意義,需要搭配名詞或代名詞(即其受詞)才能表達完整概念。 核心概念:介系詞後面永遠接名詞或動名詞 (V-ing)。 6.1 常見介系詞用法
Thumbnail
2025/07/22
6. 介系詞 (Prepositions) 介系詞是用來表達名詞或代名詞與句中其他詞之間關係的詞,通常表示時間、地點、方向、方式、原因等。介系詞本身沒有意義,需要搭配名詞或代名詞(即其受詞)才能表達完整概念。 核心概念:介系詞後面永遠接名詞或動名詞 (V-ing)。 6.1 常見介系詞用法
Thumbnail
看更多
你可能也想看
Thumbnail
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
債券投資,不只是高資產族群的遊戲 在傳統的投資觀念中,海外債券(Overseas Bonds)常被貼上「高資產族群專屬」的標籤。過去動輒 1 萬甚至 10 萬美元的最低申購門檻,讓許多想尋求穩定配息的小資族望而卻步。 然而,在股市波動劇烈的環境下,尋求穩定的美元現金流與被動收入成為許多投資人
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
透過川普的近期債券交易揭露,探討債券作為資產配置中「穩定磐石」的重要性。文章分析降息對債券的潛在影響,以及股神巴菲特的操作策略。並介紹玉山證券「小額債」平臺,如何讓小資族也能低門檻參與海外債券市場,實現「低門檻、低波動、固定收益」的務實投資方式。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
解析「債券」如何成為資產配置中的穩定錨,提供低風險高回報的投資選項。 藉由玉山證券的低門檻債券服務,投資者可輕鬆入手,平衡風險並穩定財務。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
Thumbnail
相較於波動較大的股票,債券能提供固定現金流,而玉山證券推出的小額債,更以1000 美元的低門檻,讓學生與新手也能參與全球優質企業債投資。玉山E-Trader平台即時報價、條件式篩選與清楚的交易流程等特色,大幅降低投資難度,對於希望分散風險、建立穩定現金流的人來說,玉山小額債是一個值得嘗試的理財起點。
Thumbnail
介紹如何用assign函數在Python中建立新欄位
Thumbnail
介紹如何用assign函數在Python中建立新欄位
Thumbnail
如何用Python將DataFrame中的資料擷取維新的DataFrame?
Thumbnail
如何用Python將DataFrame中的資料擷取維新的DataFrame?
Thumbnail
在這篇教學文章中,我們將展示如何使用 Python 和 pytrends 套件來取得 Google 趨勢(Google Trends)的熱門關鍵詞。我們會詳細說明如何安裝和設定 pytrends,並提供範例程式碼來幫助你輕鬆獲取台灣地區的熱門搜尋趨勢。
Thumbnail
在這篇教學文章中,我們將展示如何使用 Python 和 pytrends 套件來取得 Google 趨勢(Google Trends)的熱門關鍵詞。我們會詳細說明如何安裝和設定 pytrends,並提供範例程式碼來幫助你輕鬆獲取台灣地區的熱門搜尋趨勢。
Thumbnail
Python是一種易學且功能強大的程式語言,具有直譯、動態語法等特性,並擁有豐富的標準庫。它在各領域如Web開發、數據科學和人工智慧等得到廣泛應用,並被許多大公司如Google和Facebook等使用。Python還有強大的框架、豐富的交互機能、和龐大的社區。
Thumbnail
Python是一種易學且功能強大的程式語言,具有直譯、動態語法等特性,並擁有豐富的標準庫。它在各領域如Web開發、數據科學和人工智慧等得到廣泛應用,並被許多大公司如Google和Facebook等使用。Python還有強大的框架、豐富的交互機能、和龐大的社區。
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
Thumbnail
本文在介紹如何用Python繪製各點大小不同的散布圖及用箭頭標註特殊點
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News